<li><a href="#quickstart">Getting Started Quickly (A Summary)</a>
<li><a href="#requirements">Requirements</a>
<ol>
- <li><a href="#hardware">Hardware</a>
- <li><a href="#software">Software</a>
- <li><a href="#brokengcc">Broken versions of GCC and other tools</a>
+ <li><a href="#hardware">Hardware</a></li>
+ <li><a href="#software">Software</a></li>
+ <li><a href="#brokengcc">Broken versions of GCC and other tools</a></li>
</ol></li>
<li><a href="#starting">Getting Started with LLVM</a>
<ol>
- <li><a href="#terminology">Terminology and Notation</a>
- <li><a href="#environment">Setting Up Your Environment</a>
- <li><a href="#unpack">Unpacking the LLVM Archives</a>
- <li><a href="#checkout">Checkout LLVM from Subversion</a>
- <li><a href="#installcf">Install the GCC Front End</a>
- <li><a href="#config">Local LLVM Configuration</a>
- <li><a href="#compile">Compiling the LLVM Suite Source Code</a>
- <li><a href="#cross-compile">Cross-Compiling LLVM</a>
- <li><a href="#objfiles">The Location of LLVM Object Files</a>
- <li><a href="#optionalconfig">Optional Configuration Items</a>
+ <li><a href="#terminology">Terminology and Notation</a></li>
+ <li><a href="#environment">Setting Up Your Environment</a></li>
+ <li><a href="#unpack">Unpacking the LLVM Archives</a></li>
+ <li><a href="#checkout">Checkout LLVM from Subversion</a></li>
+ <li><a href="#installcf">Install the GCC Front End</a></li>
+ <li><a href="#config">Local LLVM Configuration</a></li>
+ <li><a href="#compile">Compiling the LLVM Suite Source Code</a></li>
+ <li><a href="#cross-compile">Cross-Compiling LLVM</a></li>
+ <li><a href="#objfiles">The Location of LLVM Object Files</a></li>
+ <li><a href="#optionalconfig">Optional Configuration Items</a></li>
</ol></li>
<li><a href="#layout">Program layout</a>
<ol>
- <li><a href="#examples"><tt>llvm/examples</tt></a>
- <li><a href="#include"><tt>llvm/include</tt></a>
- <li><a href="#lib"><tt>llvm/lib</tt></a>
- <li><a href="#projects"><tt>llvm/projects</tt></a>
- <li><a href="#runtime"><tt>llvm/runtime</tt></a>
- <li><a href="#test"><tt>llvm/test</tt></a>
- <li><a href="#llvmtest"><tt>llvm-test</tt></a>
- <li><a href="#tools"><tt>llvm/tools</tt></a>
- <li><a href="#utils"><tt>llvm/utils</tt></a>
- <li><a href="#win32"><tt>llvm/win32</tt></a>
+ <li><a href="#examples"><tt>llvm/examples</tt></a></li>
+ <li><a href="#include"><tt>llvm/include</tt></a></li>
+ <li><a href="#lib"><tt>llvm/lib</tt></a></li>
+ <li><a href="#projects"><tt>llvm/projects</tt></a></li>
+ <li><a href="#runtime"><tt>llvm/runtime</tt></a></li>
+ <li><a href="#test"><tt>llvm/test</tt></a></li>
+ <li><a href="#llvmtest"><tt>llvm-test</tt></a></li>
+ <li><a href="#tools"><tt>llvm/tools</tt></a></li>
+ <li><a href="#utils"><tt>llvm/utils</tt></a></li>
+ <li><a href="#win32"><tt>llvm/win32</tt></a></li>
</ol></li>
<li><a href="#tutorial">An Example Using the LLVM Tool Chain</a>
<li>Read the documentation.</li>
<li>Read the documentation.</li>
<li>Remember that you were warned twice about reading the documentation.</li>
- <li>Install the GCC front end if you intend to compile C or C++:
+ <li>Install the llvm-gcc4.0 (or llvm-gcc4.2) front end if you intend to compile C or C++:
<ol>
<li><tt>cd <i>where-you-want-the-C-front-end-to-live</i></tt></li>
<li><tt>gunzip --stdout llvm-gcc.<i>platform</i>.tar.gz | tar -xvf -</tt>
</li>
- <li><tt>cd llvm-gcc3.4/<i>platform</i> (llvm-gcc3.4 only)<br>
- ./fixheaders</tt></li>
+ <ul><li>If the binary extension is ".bz" use bunzip2 instead of gunzip.</li>
+ </ul>
<li>Add llvm-gcc's "bin" directory to your PATH variable.</li>
</ol></li>
<li><b>date</b> - print the current date/time </li>
<li><b>echo</b> - print to standard output</li>
<li><b>egrep</b> - extended regular expression search utility</li>
- <li><b>etags</b> - C/C++ tag file creator for vim/emacs</li>
<li><b>find</b> - find files/dirs in a file system</li>
<li><b>grep</b> - regular expression search utility</li>
<li><b>gzip*</b> - gzip command for distribution generation</li>
possibly others) does not compile LLVM correctly (it appears that exception
handling is broken in some cases). Please download the FSF 3.3.3 or upgrade
to a newer version of GCC.</p>
-<p><b>GCC 3.4.0</b> on linux/x86 (32-bit)</b>: GCC miscompiles portions of the
+<p><b>GCC 3.4.0 on linux/x86 (32-bit)</b>: GCC miscompiles portions of the
code generator, causing an infinite loop in the llvm-gcc build when built
with optimizations enabled (i.e. a release build).</p>
-<p><b>GCC 3.4.2</b> on linux/x86 (32-bit)</b>: GCC miscompiles portions of the
+<p><b>GCC 3.4.2 on linux/x86 (32-bit)</b>: GCC miscompiles portions of the
code generator at -O3, as with 3.4.0. However gcc 3.4.2 (unlike 3.4.0)
correctly compiles LLVM at -O2. A work around is to build release LLVM
builds with "make ENABLE_OPTIMIZED=1 OPTIMIZE_OPTION=-O2 ..."</p>
-<p><b>GCC 3.4.x</b> on X86-64/amd64</b>: GCC <a href="http://llvm.org/PR1056">
+<p><b>GCC 3.4.x on X86-64/amd64</b>: GCC <a href="http://llvm.org/PR1056">
miscompiles portions of LLVM</a>.</p>
+<p><b>GCC 3.4.4 (CodeSourcery ARM 2005q3-2)</b>: this compiler miscompiles LLVM
+ when building with optimizations enabled. It appears to work with
+ "<tt>make ENABLE_OPTIMIZED=1 OPTIMIZE_OPTION=-O1</tt>" or build a debug
+ build.</p>
<p><b>IA-64 GCC 4.0.0</b>: The IA-64 version of GCC 4.0.0 is known to
miscompile LLVM.</p>
<p><b>Apple Xcode 2.3</b>: GCC crashes when compiling LLVM at -O3 (which is the
subdirectories of the '<tt>tags</tt>' directory:</p>
<ul>
+<li>Release 2.1: <b>RELEASE_21</b></li>
<li>Release 2.0: <b>RELEASE_20</b></li>
<li>Release 1.9: <b>RELEASE_19</b></li>
<li>Release 1.8: <b>RELEASE_18</b></li>
<p>
If you're running on a Linux system that supports the "<a
- href="http://www.tat.physik.uni-tuebingen.de/~rguenth/linux/binfmt_misc.html">
- binfmt_misc</a>"
+href="http://www.tat.physik.uni-tuebingen.de/~rguenth/linux/binfmt_misc.html">binfmt_misc</a>"
module, and you have root access on the system, you can set your system up to
-execute LLVM bitcode files directly. To do this, use commands like this (the
+execute LLVM bitcode files directly. To do this, use commands like this (the
first command may not be required if you are already using the module):</p>
<div class="doc_code">
<dt><tt><b>lli</b></tt></dt>
<dd><tt>lli</tt> is the LLVM interpreter, which
- can directly execute LLVM bitcode (although very slowly...). In addition
- to a simple interpreter, <tt>lli</tt> also has a tracing mode (entered by
- specifying <tt>-trace</tt> on the command line). Finally, for
- architectures that support it (currently x86, Sparc, and PowerPC), by default,
- <tt>lli</tt> will function as a Just-In-Time compiler (if the
- functionality was compiled in), and will execute the code <i>much</i>
- faster than the interpreter.</dd>
+ can directly execute LLVM bitcode (although very slowly...). For architectures
+ that support it (currently x86, Sparc, and PowerPC), by default, <tt>lli</tt>
+ will function as a Just-In-Time compiler (if the functionality was compiled
+ in), and will execute the code <i>much</i> faster than the interpreter.</dd>
<dt><tt><b>llc</b></tt></dt>
<dd> <tt>llc</tt> is the LLVM backend compiler, which