<div class="doc_text">
-<p>Before configuring and compiling the LLVM suite, you need to extract the LLVM
-GCC front end from the binary distribution. It is used for building the
-bytecode libraries later used by the GCC front end for linking programs, and its
-location must be specified when the LLVM suite is configured.</p>
+<p>Before configuring and compiling the LLVM suite, you can optionally extract the
+LLVM GCC front end from the binary distribution. It is used for running the
+llvm-test testsuite and for compiling C/C++ programs. Note that you can optionally
+<a href="CFEBuildInstrs.html">build llvm-gcc yourself</a> after building the
+main LLVM repository.</p>
<p>To install the GCC front end, do the following:</p>
-</tt></li>
</ol>
+<p>Once the binary is uncompressed, you should add a symlink for llvm-gcc and
+llvm-g++ to some directory in your path. When you configure LLVM, it will
+automatically detect llvm-gcc's presence (if it is in your path) enabling its
+use in llvm-test. Note that you can always build or install llvm-gcc at any
+pointer after building the main LLVM repository: just reconfigure llvm and
+llvm-test will pick it up.
+</p>
+
<p>The binary versions of the GCC front end may not suit all of your needs. For
example, the binary distribution may include an old version of a system header
file, not "fix" a header file that needs to be fixed for GCC, or it may be
<p>In cases like these, you may want to try <a
href="CFEBuildInstrs.html">building the GCC front end from source.</a> This is
-not for the faint of heart, so be forewarned.</p>
+much easier now than it was in the past.</p>
</div>
LLVM assembly.</dd>
<dt><tt><b>llvm-ld</b></tt></dt>
- <dd><tt>llvm-ld</tt> is very similar to gccld and provides a general purpose
- and extensible linker for LLVM. This is the linker invoked by <tt>llvmc</tt>.
- It allows optimization modules to be loaded so that language specific
- optimizations can be applied at link time. This tool is considered
- experimental.</dd>
+ <dd><tt>llvm-ld</tt> is a general purpose and extensible linker for LLVM.
+ This is the linker invoked by <tt>llvmc</tt>. It performsn standard link time
+ optimizations and allows optimization modules to be loaded and run so that
+ language specific optimizations can be applied at link time.</dd>
<dt><tt><b>llvm-link</b></tt></dt>
<dd><tt>llvm-link</tt>, not surprisingly, links multiple LLVM modules into
the -march=c option).</dd>
<dt><tt><b>llvm-gcc</b></tt></dt>
- <dd><tt>llvm-gcc</tt> is a GCC-based C frontend
- that has been retargeted to emit LLVM code as the machine code output. It
- works just like any other GCC compiler, taking the typical <tt>-c, -S, -E,
- -o</tt> options that are typically used. The source code for the
- <tt>llvm-gcc</tt> tool is available as a separate CVS module.
- <blockquote>
- <dl>
- <dt><tt><b>gccas</b></tt></dt>
- <dd>This tool is invoked by the <tt>llvm-gcc</tt> frontend as the
- "assembler" part of the compiler. This tool actually assembles LLVM
- assembly to LLVM bytecode, performs a variety of optimizations, and
- outputs LLVM bytecode. Thus when you invoke
- <tt>llvm-gcc -c x.c -o x.o</tt>, you are causing <tt>gccas</tt> to be
- run, which writes the <tt>x.o</tt> file (which is an LLVM bytecode file
- that can be disassembled or manipulated just like any other bytecode
- file). The command line interface to <tt>gccas</tt> is designed to be
- as close as possible to the <b>system</b> `<tt>as</tt>' utility so that
- the gcc frontend itself did not have to be modified to interface to
- a "weird" assembler.</dd>
-
- <dt><tt><b>gccld</b></tt></dt>
- <dd><tt>gccld</tt> links together several LLVM bytecode files into one
- bytecode file and does some optimization. It is the linker invoked by
- the GCC frontend when multiple .o files need to be linked together.
- Like <tt>gccas</tt>, the command line interface of <tt>gccld</tt> is
- designed to match the system linker, to aid interfacing with the GCC
- frontend.</dd>
- </dl>
- </blockquote>
- </dd>
+ <dd><tt>llvm-gcc</tt> is a GCC-based C frontend that has been retargeted to
+ use LLVM as its backend instead of GCC's RTL backend. It can also emit LLVM
+ byte code or assembly (with the <tt>-emit-llvm</tt> option) instead of the
+ usual machine code output. It works just like any other GCC compiler,
+ taking the typical <tt>-c, -S, -E, -o</tt> options that are typically used.
+ Additionally, the the source code for <tt>llvm-gcc</tt> is available as a
+ separate CVS module.</dd>
<dt><tt><b>opt</b></tt></dt>
<dd><tt>opt</tt> reads LLVM bytecode, applies a series of LLVM to LLVM