<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
                      "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  <title>Getting Started with LLVM System</title>
  <link rel="stylesheet" href="llvm.css" type="text/css">
</head>
<body>

<div class="doc_title">
  Getting Started with the LLVM System  
</div>

<ul>
  <li><a href="#overview">Overview</a>
  <li><a href="#quickstart">Getting Started Quickly (A Summary)</a>
  <li><a href="#requirements">Requirements</a>
    <ol>
      <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>
      <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>
      <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>
      <ol>
         <li><a href="#tutorial4">Example with llvm-gcc4</a></li>
      </ol>
  <li><a href="#problems">Common Problems</a>
  <li><a href="#links">Links</a>
</ul>

<div class="doc_author">
  <p>Written by: 
    <a href="mailto:criswell@uiuc.edu">John Criswell</a>, 
    <a href="mailto:sabre@nondot.org">Chris Lattner</a>,
    <a href="http://misha.brukman.net">Misha Brukman</a>, 
    <a href="http://www.cs.uiuc.edu/~vadve">Vikram Adve</a>, and
    <a href="mailto:gshi1@uiuc.edu">Guochun Shi</a>.
  </p>
</div>


<!-- *********************************************************************** -->
<div class="doc_section">
  <a name="overview"><b>Overview</b></a>
</div>
<!-- *********************************************************************** -->

<div class="doc_text">

<p>Welcome to LLVM! In order to get started, you first need to know some
basic information.</p>

<p>First, LLVM comes in two pieces. The first piece is the LLVM suite. This
contains all of the tools, libraries, and header files needed to use the low
level virtual machine.  It contains an assembler, disassembler, bitcode
analyzer and bitcode optimizer.  It also contains a test suite that can be
used to test the LLVM tools and the GCC front end.</p>

<p>The second piece is the GCC front end.  This component provides a version of
GCC that compiles C and C++ code into LLVM bitcode.  Currently, the GCC front
end uses the GCC parser to convert code to LLVM.  Once
compiled into LLVM bitcode, a program can be manipulated with the LLVM tools
from the LLVM suite.</p>

<p>
There is a third, optional piece called llvm-test.  It is a suite of programs
with a testing harness that can be used to further test LLVM's functionality
and performance.
</p>

</div>

<!-- *********************************************************************** -->
<div class="doc_section">
  <a name="quickstart"><b>Getting Started Quickly (A Summary)</b></a>
</div>
<!-- *********************************************************************** -->

<div class="doc_text">

<p>Here's the short story for getting up and running quickly with LLVM:</p>

<ol>
  <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 llvm-gcc-4.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-4.2-<i>version</i>-<i>platform</i>.tar.gz | tar -xvf -</tt>
      </li>
      <li>Note: If the binary extension is ".bz" use bunzip2 instead of gunzip.</li>
      <li>Add llvm-gcc's "bin" directory to your PATH variable.</li>
    </ol></li>

  <li>Get the LLVM Source Code
  <ul>
    <li>With the distributed files (or use <a href="#checkout">SVN</a>):
    <ol>
      <li><tt>cd <i>where-you-want-llvm-to-live</i></tt>
      <li><tt>gunzip --stdout llvm-<i>version</i>.tar.gz | tar -xvf -</tt>
    </ol></li>

  </ul></li>

  <li><b>[Optional]</b> Get the Test Suite Source Code 
  <ul>
    <li>With the distributed files (or use <a href="#checkout">SVN</a>):
    <ol>
      <li><tt>cd <i>where-you-want-llvm-to-live</i></tt>
      <li><tt>cd llvm/projects</tt>
      <li><tt>gunzip --stdout llvm-test-<i>version</i>.tar.gz | tar -xvf -</tt>
    </ol></li>

  </ul></li>


  <li>Configure the LLVM Build Environment
  <ol>
    <li><tt>cd <i>where-you-want-to-build-llvm</i></tt></li>
    <li><tt><i>/path/to/llvm/</i>configure [options]</tt><br>
    Some common options:

      <ul>
        <li><tt>--prefix=<i>directory</i></tt>
        <p>Specify for <i>directory</i> the full pathname of where you
        want the LLVM tools and libraries to be installed (default
        <tt>/usr/local</tt>).</p></li>
        <li><tt>--with-llvmgccdir=<i>directory</i></tt>
        <p>Optionally, specify for <i>directory</i> the full pathname of the 
        C/C++ front end installation to use with this LLVM configuration. If
        not specified, the PATH will be searched.</p></li>
        <li><tt>--enable-spec2000=<i>directory</i></tt>
            <p>Enable the SPEC2000 benchmarks for testing.  The SPEC2000
            benchmarks should be available in
            <tt><i>directory</i></tt>.</p></li>
      </ul>
  </ol></li>

  <li>Build the LLVM Suite:
  <ol>
      <li><tt>gmake -k |&amp; tee gnumake.out
      &nbsp;&nbsp;&nbsp;# this is csh or tcsh syntax</tt></li>
      <li>If you get an "internal compiler error (ICE)" or test failures, see 
          <a href="#brokengcc">below</a>.</li>
  </ol>

</ol>

<p>Consult the <a href="#starting">Getting Started with LLVM</a> section for
detailed information on configuring and compiling LLVM.  See <a
href="#environment">Setting Up Your Environment</a> for tips that simplify
working with the GCC front end and LLVM tools.  Go to <a href="#layout">Program
Layout</a> to learn about the layout of the source code tree.</p>

</div>

<!-- *********************************************************************** -->
<div class="doc_section">
  <a name="requirements"><b>Requirements</b></a>
</div>
<!-- *********************************************************************** -->

<div class="doc_text">

<p>Before you begin to use the LLVM system, review the requirements given below.
This may save you some trouble by knowing ahead of time what hardware and
software you will need.</p>

</div>

<!-- ======================================================================= -->
<div class="doc_subsection">
  <a name="hardware"><b>Hardware</b></a>
</div>

<div class="doc_text">

<p>LLVM is known to work on the following platforms:</p>

<table cellpadding="3" summary="Known LLVM platforms">
<tr>
  <th>OS</th>
  <th>Arch</th>
  <th>Compilers</th>
</tr>
<tr>
  <td>Linux</td>
  <td>x86<sup><a href="#pf_1">1</a></sup></td>
  <td>GCC</td>
</tr>
<tr>
  <td>Solaris</td>
  <td>V9 (Ultrasparc)</td>
  <td>GCC</td>
</tr>
<tr>
  <td>FreeBSD</td>
  <td>x86<sup><a href="#pf_1">1</a></sup></td>
  <td>GCC</td>
</tr>
<tr>
  <td>MacOS X<sup><a href="#pf_2">2</a></sup></td>
  <td>PowerPC</td>
  <td>GCC</td>
</tr>
<tr>
  <td>MacOS X<sup><a href="#pf_2">2</a>,<a href="#pf_9">9</a></sup></td>
  <td>x86</td>
  <td>GCC</td>

</tr>
<tr>
  <td>Cygwin/Win32</td>
  <td>x86<sup><a href="#pf_1">1</a>,<a href="#pf_8">8</a></sup></td>
  <td>GCC 3.4.X, binutils 2.15</td>
</tr>
<tr>
  <td>MinGW/Win32</td>
  <td>x86<sup><a href="#pf_1">1</a>,<a href="#pf_6">6</a>,<a href="#pf_8">8</a></sup></td>
  <td>GCC 3.4.X, binutils 2.15</td>
</tr>
<tr>
  <td>Linux</td>
  <td>amd64</td>
  <td>GCC</td>
</tr>
</table>

<p>LLVM has partial support for the following platforms:</p>

<table summary="LLVM partial platform support">
<tr>
  <th>OS</th>
  <th>Arch</th>
  <th>Compilers</th>
</tr>
<tr>
  <td>Windows</td>
  <td>x86<sup><a href="#pf_1">1</a></sup></td>
  <td>Visual Studio 2005 SP1 or higher<sup><a href="#pf_4">4</a>,<a href="#pf_5">5</a></sup></td>
<tr>
  <td>AIX<sup><a href="#pf_3">3</a>,<a href="#pf_4">4</a></sup></td>
  <td>PowerPC</td>
  <td>GCC</td>
</tr>
<tr>
  <td>Linux<sup><a href="#pf_3">3</a>,<a href="#pf_5">5</a></sup></td>
  <td>PowerPC</td>
  <td>GCC</td>
</tr>

<tr>
  <td>Linux<sup><a href="#pf_7">7</a></sup></td>
  <td>Alpha</td>
  <td>GCC</td>
</tr>
<tr>
  <td>Linux<sup><a href="#pf_7">7</a></sup></td>
  <td>Itanium (IA-64)</td>
  <td>GCC</td>
</tr>
<tr>
  <td>HP-UX<sup><a href="#pf_7">7</a></sup></td>
  <td>Itanium (IA-64)</td>
  <td>HP aCC</td>
</tr>
</table>

<p><b>Notes:</b></p>

<div class="doc_notes">
<ol>
<li><a name="pf_1">Code generation supported for Pentium processors and
up</a></li>
<li><a name="pf_2">Code generation supported for 32-bit ABI only</a></li>
<li><a name="pf_3">No native code generation</a></li>
<li><a name="pf_4">Build is not complete: one or more tools do not link or function</a></li>
<li><a name="pf_5">The GCC-based C/C++ frontend does not build</a></li>
<li><a name="pf_6">The port is done using the MSYS shell.</a></li>
<li><a name="pf_7">Native code generation exists but is not complete.</a></li>
<li><a name="pf_8">Binutils</a> up to post-2.17 has bug in bfd/cofflink.c
    preventing LLVM from building correctly. Several workarounds have been
    introduced into LLVM build system, but the bug can occur anytime in the
    future. We highly recommend that you rebuild your current binutils with the
    patch from <a href="http://sourceware.org/bugzilla/show_bug.cgi?id=2659">
    Binutils bugzilla</a>, if it wasn't already applied.</li>
<li><a name="pf_9">XCode 2.5 and gcc 4.0.1</a> (Apple Build 5370) will trip
    internal LLVM assert messages when compiled for Release at optimization
    levels greater than 0 (i.e., <i>"-O1"</i> and higher).
    Add <i>OPTIMIZE_OPTION="-O0"</i> to the build command line
    if compiling for LLVM Release or bootstrapping the LLVM toolchain.</li>
</ol>
</div>

<p>Note that you will need about 1-3 GB of space for a full LLVM build in Debug
mode, depending on the system (it is so large because of all the debugging
information and the fact that the libraries are statically linked into multiple
tools).  If you do not need many of the tools and you are space-conscious,
you can disable them individually in <tt>llvm/tools/Makefile</tt>.  The Release
build requires considerably less space.</p>

<p>The LLVM suite <i>may</i> compile on other platforms, but it is not
guaranteed to do so.  If compilation is successful, the LLVM utilities should be
able to assemble, disassemble, analyze, and optimize LLVM bitcode.  Code
generation should work as well, although the generated native code may not work
on your platform.</p>

<p>The GCC front end is not very portable at the moment.  If you want to get it
to work on another platform, you can download a copy of the source and <a
href="GCCFEBuildInstrs.html">try to compile it</a> on your platform.</p>

</div>

<!-- ======================================================================= -->
<div class="doc_subsection"><a name="software"><b>Software</b></a></div>
<div class="doc_text">
  <p>Compiling LLVM requires that you have several software packages 
  installed. The table below lists those required packages. The Package column
  is the usual name for the software package that LLVM depends on. The Version
  column provides "known to work" versions of the package. The Notes column
  describes how LLVM uses the package and provides other details.</p>
  <table summary="Packages required to compile LLVM">
    <tr><th>Package</th><th>Version</th><th>Notes</th></tr>

    <tr>
      <td><a href="http://savannah.gnu.org/projects/make">GNU Make</a></td>
      <td>3.79, 3.79.1</td>
      <td>Makefile/build processor</td>
    </tr>

    <tr>
      <td><a href="http://gcc.gnu.org">GCC</a></td>
      <td>3.4.2</td>
      <td>C/C++ compiler<sup><a href="#sf1">1</a></sup></td>
    </tr>

    <tr>
      <td><a href="http://www.gnu.org/software/texinfo">TeXinfo</a></td>
      <td>4.5</td>
      <td>For building the CFE</td>
    </tr>

    <tr>
      <td><a href="http://subversion.tigris.org/project_packages.html">SVN</a></td>
      <td>&ge;1.3</td>
      <td>Subversion access to LLVM<sup><a href="#sf2">2</a></sup></td>
    </tr>

    <tr>
      <td><a href="http://savannah.gnu.org/projects/dejagnu">DejaGnu</a></td>
      <td>1.4.2</td>
      <td>Automated test suite<sup><a href="#sf3">3</a></sup></td>
    </tr>

    <tr>
      <td><a href="http://www.tcl.tk/software/tcltk/">tcl</a></td>
      <td>8.3, 8.4</td>
      <td>Automated test suite<sup><a href="#sf3">3</a></sup></td>
    </tr>

    <tr>
      <td><a href="http://expect.nist.gov/">expect</a></td>
      <td>5.38.0</td>
      <td>Automated test suite<sup><a href="#sf3">3</a></sup></td>
    </tr>

    <tr>
      <td><a href="http://www.perl.com/download.csp">perl</a></td>
      <td>&ge;5.6.0</td>
      <td>Nightly tester, utilities</td>
    </tr>

    <tr>
      <td><a href="http://savannah.gnu.org/projects/m4">GNU M4</a>
      <td>1.4</td>
      <td>Macro processor for configuration<sup><a href="#sf4">4</a></sup></td>
    </tr>

    <tr>
      <td><a href="http://www.gnu.org/software/autoconf">GNU Autoconf</a></td>
      <td>2.59</td>
      <td>Configuration script builder<sup><a href="#sf4">4</a></sup></td>
    </tr>

    <tr>
      <td><a href="http://www.gnu.org/software/automake">GNU Automake</a></td>
      <td>1.9.2</td>
      <td>aclocal macro generator<sup><a href="#sf4">4</a></sup></td>
    </tr>

    <tr>
      <td><a href="http://savannah.gnu.org/projects/libtool">libtool</a></td>
      <td>1.5.10</td>
      <td>Shared library manager<sup><a href="#sf4">4</a></sup></td>
    </tr>

  </table>

  <p><b>Notes:</b></p>
  <div class="doc_notes">
  <ol>
    <li><a name="sf1">Only the C and C++ languages are needed so there's no
      need to build the other languages for LLVM's purposes.</a> See 
      <a href="#brokengcc">below</a> for specific version info.</li>
    <li><a name="sf2">You only need Subversion if you intend to build from the 
      latest LLVM sources. If you're working from a release distribution, you
      don't need Subversion.</a></li>
    <li><a name="sf3">Only needed if you want to run the automated test 
      suite in the <tt>llvm/test</tt> directory.</a></li>
    <li><a name="sf4">If you want to make changes to the configure scripts, 
      you will need GNU autoconf (2.59), and consequently, GNU M4 (version 1.4 
      or higher). You will also need automake (1.9.2). We only use aclocal 
      from that package.</a></li>
  </ol>
  </div>
  
  <p>Additionally, your compilation host is expected to have the usual 
  plethora of Unix utilities. Specifically:</p>
  <ul>
    <li><b>ar</b> - archive library builder</li>
    <li><b>bzip2*</b> - bzip2 command for distribution generation</li>
    <li><b>bunzip2*</b> - bunzip2 command for distribution checking</li>
    <li><b>chmod</b> - change permissions on a file</li>
    <li><b>cat</b> - output concatenation utility</li>
    <li><b>cp</b> - copy files</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>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>
    <li><b>gunzip*</b> - gunzip command for distribution checking</li>
    <li><b>install</b> - install directories/files </li>
    <li><b>mkdir</b> - create a directory</li>
    <li><b>mv</b> - move (rename) files</li>
    <li><b>ranlib</b> - symbol table builder for archive libraries</li>
    <li><b>rm</b> - remove (delete) files and directories</li>
    <li><b>sed</b> - stream editor for transforming output</li>
    <li><b>sh</b> - Bourne shell for make build scripts</li>
    <li><b>tar</b> - tape archive for distribution generation</li>
    <li><b>test</b> - test things in file system</li>
    <li><b>unzip*</b> - unzip command for distribution checking</li>
    <li><b>zip*</b> - zip command for distribution generation</li>
  </ul>
</div>

<!-- ======================================================================= -->
<div class="doc_subsection">
  <a name="brokengcc">Broken versions of GCC and other tools</a>
</div>

<div class="doc_text">

<p>LLVM is very demanding of the host C++ compiler, and as such tends to expose
bugs in the compiler.  In particular, several versions of GCC crash when trying
to compile LLVM.  We routinely use GCC 3.3.3, 3.4.0, and Apple 4.0.1 
successfully with them (however, see important notes below).  Other versions 
of GCC will probably work as well.  GCC versions listed
here are known to not work.  If you are using one of these versions, please try
to upgrade your GCC to something more recent.  If you run into a problem with a
version of GCC not listed here, please <a href="mailto:llvmdev@cs.uiuc.edu">let
us know</a>.  Please use the "<tt>gcc -v</tt>" command to find out which version
of GCC you are using.
</p>

<p><b>GCC versions prior to 3.0</b>: GCC 2.96.x and before had several
problems in the STL that effectively prevent it from compiling LLVM.
</p>

<p><b>GCC 3.2.2 and 3.2.3</b>: These versions of GCC fails to compile LLVM with
a bogus template error.  This was fixed in later GCCs.</p>

<p><b>GCC 3.3.2</b>: This version of GCC suffered from a <a 
href="http://gcc.gnu.org/PR13392">serious bug</a> which causes it to crash in
the "<tt>convert_from_eh_region_ranges_1</tt>" GCC function.</p>

<p><b>Cygwin GCC 3.3.3</b>: The version of GCC 3.3.3 commonly shipped with 
   Cygwin does not work.  Please <a href="GCCFEBuildInstrs.html#cygwin">upgrade 
   to a newer version</a> if possible.</p>
<p><b>SuSE GCC 3.3.3</b>: The version of GCC 3.3.3 shipped with SuSE 9.1 (and 
   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 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 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 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
   default with ENABLE_OPTIMIZED=1.  To work around this, build with 
   "ENABLE_OPTIMIZED=1 OPTIMIZE_OPTION=-O2".</p>
<p><b>GCC 4.1.1</b>: GCC fails to build LLVM with template concept check errors
      compiling some files.  At the time of this writing, GCC mainline (4.2)
      did not share the problem.</p>
<p><b>GCC 4.1.1 on X86-64/amd64</b>: GCC <a href="http://llvm.org/PR1063">
   miscompiles portions of LLVM</a> when compiling llvm itself into 64-bit 
   code.  LLVM will appear to mostly work but will be buggy, e.g. failing 
   portions of its testsuite.</p>
<p><b>GCC 4.1.2 on OpenSUSE</b>: Seg faults during libstdc++ build and on x86_64
platforms compiling md5.c gets a mangled constant.</p>
<p><b>GCC 4.1.2 (20061115 (prerelease) (Debian 4.1.1-21)) on Debian</b>: Appears
to miscompile parts of LLVM 2.4. One symptom is ValueSymbolTable complaining
about symbols remaining in the table on destruction.</p>
<p><b>GCC 4.1.2 20071124 (Red Hat 4.1.2-42)</b>: Suffers from the same symptoms
as the previous one. It appears to work with ENABLE_OPTIMIZED=0 (the default).</p>

<p><b>GNU ld 2.16.X</b>. Some 2.16.X versions of the ld linker will produce very
long warning messages complaining that some ".gnu.linkonce.t.*" symbol was
defined in a discarded section. You can safely ignore these messages as they are
erroneous and the linkage is correct.  These messages disappear using ld
2.17.</p>

<p><b>GNU binutils 2.17</b>: Binutils 2.17 contains <a 
href="http://sourceware.org/bugzilla/show_bug.cgi?id=3111">a bug</a> which
causes huge link times (minutes instead of seconds) when building LLVM.  We
recommend upgrading to a newer version (2.17.50.0.4 or later).</p>

<p><b>GNU Binutils 2.19.1 Gold</b>: This version of Gold contained
<a href="http://sourceware.org/bugzilla/show_bug.cgi?id=9836">a bug</a>
which causes intermittent failures when building LLVM with position independent
code.  The symptom is an error about cyclic dependencies.  We recommend
upgrading to a newer version of Gold.</p>

</div>



<!-- *********************************************************************** -->
<div class="doc_section">
  <a name="starting"><b>Getting Started with LLVM</b></a>
</div>
<!-- *********************************************************************** -->

<div class="doc_text">

<p>The remainder of this guide is meant to get you up and running with
LLVM and to give you some basic information about the LLVM environment.</p>

<p>The later sections of this guide describe the <a
href="#layout">general layout</a> of the the LLVM source tree, a <a
href="#tutorial">simple example</a> using the LLVM tool chain, and <a
href="#links">links</a> to find more information about LLVM or to get
help via e-mail.</p>
</div>

<!-- ======================================================================= -->
<div class="doc_subsection">
  <a name="terminology">Terminology and Notation</a>
</div>

<div class="doc_text">

<p>Throughout this manual, the following names are used to denote paths
specific to the local system and working environment.  <i>These are not
environment variables you need to set but just strings used in the rest
of this document below</i>.  In any of the examples below, simply replace
each of these names with the appropriate pathname on your local system.
All these paths are absolute:</p>

<dl>
    <dt>SRC_ROOT
    <dd>
    This is the top level directory of the LLVM source tree.
    <br><br>

    <dt>OBJ_ROOT
    <dd>
    This is the top level directory of the LLVM object tree (i.e. the
    tree where object files and compiled programs will be placed.  It
    can be the same as SRC_ROOT).
    <br><br>

    <dt>LLVMGCCDIR
    <dd>
    This is where the LLVM GCC Front End is installed.
    <p>
    For the pre-built GCC front end binaries, the LLVMGCCDIR is
    <tt>llvm-gcc/<i>platform</i>/llvm-gcc</tt>.
</dl>

</div>

<!-- ======================================================================= -->
<div class="doc_subsection">
  <a name="environment">Setting Up Your Environment</a>
</div>

<div class="doc_text">

<p>
In order to compile and use LLVM, you may need to set some environment
variables.

<dl>
  <dt><tt>LLVM_LIB_SEARCH_PATH</tt>=<tt>/path/to/your/bitcode/libs</tt></dt>
  <dd>[Optional] This environment variable helps LLVM linking tools find the
  locations of your bitcode libraries. It is provided only as a
  convenience since you can specify the paths using the -L options of the
  tools and the C/C++ front-end will automatically use the bitcode files
  installed in its
  <tt>lib</tt> directory.</dd>
</dl>

</div>

<!-- ======================================================================= -->
<div class="doc_subsection">
  <a name="unpack">Unpacking the LLVM Archives</a>
</div>

<div class="doc_text">

<p>
If you have the LLVM distribution, you will need to unpack it before you
can begin to compile it.  LLVM is distributed as a set of two files: the LLVM
suite and the LLVM GCC front end compiled for your platform.  There is an
additional test suite that is optional.  Each file is a TAR archive that is
compressed with the gzip program.
</p>

<p>The files are as follows, with <em>x.y</em> marking the version number:
<dl>
  <dt><tt>llvm-x.y.tar.gz</tt></dt>
  <dd>Source release for the LLVM libraries and tools.<br></dd>

  <dt><tt>llvm-test-x.y.tar.gz</tt></dt>
  <dd>Source release for the LLVM test suite.</dd>

  <dt><tt>llvm-gcc-4.2-x.y.source.tar.gz</tt></dt>
  <dd>Source release of the llvm-gcc-4.2 front end.  See README.LLVM in the root
      directory for build instructions.<br></dd>

  <dt><tt>llvm-gcc-4.2-x.y-platform.tar.gz</tt></dt>
  <dd>Binary release of the llvm-gcc-4.2 front end for a specific platform.<br></dd>

</dl>

</div>

<!-- ======================================================================= -->
<div class="doc_subsection">
  <a name="checkout">Checkout LLVM from Subversion</a>
</div>

<div class="doc_text">

<p>If you have access to our Subversion repository, you can get a fresh copy of
the entire source code.  All you need to do is check it out from Subvresion as
follows:</p>

<ul>
  <li><tt>cd <i>where-you-want-llvm-to-live</i></tt></li>
  <li>Read-Only: <tt>svn co http://llvm.org/svn/llvm-project/llvm/trunk llvm</tt></li>
  <li>Read-Write:<tt>svn co https://user@llvm.org/svn/llvm-project/llvm/trunk
    llvm</tt></li>
</ul>


<p>This will create an '<tt>llvm</tt>' directory in the current
directory and fully populate it with the LLVM source code, Makefiles,
test directories, and local copies of documentation files.</p>

<p>If you want to get a specific release (as opposed to the most recent
revision), you can checkout it from the '<tt>tags</tt>' directory (instead of
'<tt>trunk</tt>'). The following releases are located in the following
subdirectories of the '<tt>tags</tt>' directory:</p>

<ul>
<li>Release 2.4: <b>RELEASE_24</b></li>
<li>Release 2.3: <b>RELEASE_23</b></li>
<li>Release 2.2: <b>RELEASE_22</b></li>
<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>
<li>Release 1.7: <b>RELEASE_17</b></li>
<li>Release 1.6: <b>RELEASE_16</b></li>
<li>Release 1.5: <b>RELEASE_15</b></li>
<li>Release 1.4: <b>RELEASE_14</b></li>
<li>Release 1.3: <b>RELEASE_13</b></li>
<li>Release 1.2: <b>RELEASE_12</b></li>
<li>Release 1.1: <b>RELEASE_11</b></li>
<li>Release 1.0: <b>RELEASE_1</b></li>
</ul>

<p>If you would like to get the LLVM test suite (a separate package as of 1.4),
you get it from the Subversion repository:</p>

<div class="doc_code">
<pre>
% cd llvm/projects
% svn co http://llvm.org/svn/llvm-project/test-suite/trunk llvm-test
</pre>
</div>

<p>By placing it in the <tt>llvm/projects</tt>, it will be automatically
configured by the LLVM configure script as well as automatically updated when
you run <tt>svn update</tt>.</p>

<p>If you would like to get the GCC front end source code, you can also get it 
and build it yourself.  Please follow <a href="GCCFEBuildInstrs.html">these 
instructions</a> to successfully get and build the LLVM GCC front-end.</p>

</div>

<!-- ======================================================================= -->
<div class="doc_subsection">
  <a name="installcf">Install the GCC Front End</a>
</div>

<div class="doc_text">

<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="GCCFEBuildInstrs.html">build llvm-gcc yourself</a> after building the
main LLVM repository.</p>

<p>To install the GCC front end, do the following:</p>

<ol>
  <li><tt>cd <i>where-you-want-the-front-end-to-live</i></tt></li>
  <li><tt>gunzip --stdout llvm-gcc-4.2-<i>version</i>-<i>platform</i>.tar.gz | tar -xvf
      -</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
linked with libraries not available on your system.</p>

<p>In cases like these, you may want to try <a
href="GCCFEBuildInstrs.html">building the GCC front end from source.</a> This is
much easier now than it was in the past.</p>

</div>

<!-- ======================================================================= -->
<div class="doc_subsection">
  <a name="config">Local LLVM Configuration</a>
</div>

<div class="doc_text">

  <p>Once checked out from the Subversion repository, the LLVM suite source 
  code must be
configured via the <tt>configure</tt> script.  This script sets variables in the
various <tt>*.in</tt> files, most notably <tt>llvm/Makefile.config</tt> and 
<tt>llvm/include/Config/config.h</tt>.  It also populates <i>OBJ_ROOT</i> with 
the Makefiles needed to begin building LLVM.</p>

<p>The following environment variables are used by the <tt>configure</tt>
script to configure the build system:</p>

<table summary="LLVM configure script environment variables">
  <tr><th>Variable</th><th>Purpose</th></tr>
  <tr>
    <td>CC</td>
    <td>Tells <tt>configure</tt> which C compiler to use.  By default,
        <tt>configure</tt> will look for the first GCC C compiler in
        <tt>PATH</tt>.  Use this variable to override
        <tt>configure</tt>'s default behavior.</td>
  </tr>
  <tr>
    <td>CXX</td>
    <td>Tells <tt>configure</tt> which C++ compiler to use.  By default,
       <tt>configure</tt> will look for the first GCC C++ compiler in
       <tt>PATH</tt>.  Use this variable to override
       <tt>configure</tt>'s default behavior.</td>
  </tr>
</table>

<p>The following options can be used to set or enable LLVM specific options:</p>

<dl>
  <dt><i>--with-llvmgccdir</i></dt>
  <dd>Path to the LLVM C/C++ FrontEnd to be used with this LLVM configuration. 
  The value of this option should specify the full pathname of the C/C++ Front
  End to be used. If this option is not provided, the PATH will be searched for
  a program named <i>llvm-gcc</i> and the C/C++ FrontEnd install directory will
  be inferred from the path found. If the option is not given, and no llvm-gcc
  can be found in the path then a warning will be produced by 
  <tt>configure</tt> indicating this situation. LLVM may still be built with 
  the <tt>tools-only</tt> target but attempting to build the runtime libraries
  will fail as these libraries require llvm-gcc and llvm-g++. See 
  <a href="#installcf">Install the GCC Front End</a> for details on installing
  the C/C++ Front End. See
  <a href="GCCFEBuildInstrs.html">Bootstrapping the LLVM C/C++ Front-End</a>
  for details on building the C/C++ Front End.</dd>
  <dt><i>--with-tclinclude</i></dt>
  <dd>Path to the tcl include directory under which <tt>tclsh</tt> can be
  found. Use this if you have multiple tcl installations on your machine and you
  want to use a specific one (8.x) for LLVM. LLVM only uses tcl for running the
  dejagnu based test suite in <tt>llvm/test</tt>. If you don't specify this
  option, the LLVM configure script will search for the tcl 8.4 and 8.3
  releases.
  <br><br>
  </dd>
  <dt><i>--enable-optimized</i></dt>
  <dd>
    Enables optimized compilation by default (debugging symbols are removed
    and GCC optimization flags are enabled).  The default is to use an
    unoptimized build (also known as a debug build).
    <br><br>
  </dd>
  <dt><i>--enable-debug-runtime</i></dt>
  <dd>
    Enables debug symbols in the runtime libraries. The default is to strip
    debug symbols from the runtime libraries. 
  </dd>
  <dt><i>--enable-jit</i></dt>
  <dd>
    Compile the Just In Time (JIT) compiler functionality.  This is not
    available
    on all platforms.  The default is dependent on platform, so it is best
    to explicitly enable it if you want it.
    <br><br>
  </dd>
  <dt><i>--enable-targets=</i><tt>target-option</tt></dt>
  <dd>Controls which targets will be built and linked into llc. The default 
  value for <tt>target_options</tt> is "all" which builds and links all 
  available targets.  The value "host-only" can be specified to build only a 
  native compiler (no cross-compiler targets available). The "native" target is 
  selected as the target of the build host. You can also specify a comma 
  separated list of target names that you want available in llc. The target 
  names use all lower case. The current set of targets is: <br>
  <tt>alpha, ia64, powerpc, skeleton, sparc, x86</tt>.
  <br><br></dd>
  <dt><i>--enable-doxygen</i></dt>
  <dd>Look for the doxygen program and enable construction of doxygen based
  documentation from the source code. This is disabled by default because 
  generating the documentation can take a long time and producess 100s of 
  megabytes of output.</dd>
  <dt><i>--with-udis86</i></dt>
  <dd>LLVM can use external disassembler library for various purposes (now it's
  used only for examining code produced by JIT). This option will enable usage
  of <a href="http://udis86.sourceforge.net/">udis86</a> x86 (both 32 and 64
  bits) disassembler library.</dd>
</dl>

<p>To configure LLVM, follow these steps:</p>

<ol>
    <li><p>Change directory into the object root directory:</p>

    <div class="doc_code"><pre>% cd <i>OBJ_ROOT</i></pre></div></li>

    <li><p>Run the <tt>configure</tt> script located in the LLVM source
    tree:</p>

    <div class="doc_code">
    <pre>% <i>SRC_ROOT</i>/configure --prefix=/install/path [other options]</pre>
    </div></li>
</ol>

</div>

<!-- ======================================================================= -->
<div class="doc_subsection">
  <a name="compile">Compiling the LLVM Suite Source Code</a>
</div>

<div class="doc_text">

<p>Once you have configured LLVM, you can build it.  There are three types of
builds:</p>

<dl>
    <dt>Debug Builds
    <dd>
    These builds are the default when one types <tt>gmake</tt> (unless the
    <tt>--enable-optimized</tt> option was used during configuration).  The
    build system will compile the tools and libraries with debugging
    information.
    <br><br>

    <dt>Release (Optimized) Builds
    <dd>
    These builds are enabled with the <tt>--enable-optimized</tt> option to
    <tt>configure</tt> or by specifying <tt>ENABLE_OPTIMIZED=1</tt> on the
    <tt>gmake</tt> command line.  For these builds, the build system will
    compile the tools and libraries with GCC optimizations enabled and strip
    debugging information from the libraries and executables it generates. 
    <br><br>

    <dt>Profile Builds
    <dd>
    These builds are for use with profiling.  They compile profiling
    information into the code for use with programs like <tt>gprof</tt>.
    Profile builds must be started by specifying <tt>ENABLE_PROFILING=1</tt>
    on the <tt>gmake</tt> command line.
</dl>

<p>Once you have LLVM configured, you can build it by entering the
<i>OBJ_ROOT</i> directory and issuing the following command:</p>

<div class="doc_code"><pre>% gmake</pre></div>

<p>If the build fails, please <a href="#brokengcc">check here</a> to see if you
are using a version of GCC that is known not to compile LLVM.</p>

<p>
If you have multiple processors in your machine, you may wish to use some of
the parallel build options provided by GNU Make.  For example, you could use the
command:</p>

<div class="doc_code"><pre>% gmake -j2</pre></div>

<p>There are several special targets which are useful when working with the LLVM
source code:</p>

<dl>
  <dt><tt>gmake clean</tt>
  <dd>
  Removes all files generated by the build.  This includes object files,
  generated C/C++ files, libraries, and executables.
  <br><br>

  <dt><tt>gmake dist-clean</tt>
  <dd>
  Removes everything that <tt>gmake clean</tt> does, but also removes files
  generated by <tt>configure</tt>.  It attempts to return the source tree to the
  original state in which it was shipped.
  <br><br>

  <dt><tt>gmake install</tt>
  <dd>
  Installs LLVM header files, libraries, tools, and documentation in a
  hierarchy 
  under $PREFIX, specified with <tt>./configure --prefix=[dir]</tt>, which 
  defaults to <tt>/usr/local</tt>.
  <br><br>

  <dt><tt>gmake -C runtime install-bytecode</tt>
  <dd>
  Assuming you built LLVM into $OBJDIR, when this command is run, it will 
  install bitcode libraries into the GCC front end's bitcode library 
  directory.  If you need to update your bitcode libraries,
  this is the target to use once you've built them.
  <br><br>
</dl>

<p>Please see the <a href="MakefileGuide.html">Makefile Guide</a> for further
details on these <tt>make</tt> targets and descriptions of other targets
available.</p>

<p>It is also possible to override default values from <tt>configure</tt> by
declaring variables on the command line.  The following are some examples:</p>

<dl>
  <dt><tt>gmake ENABLE_OPTIMIZED=1</tt>
  <dd>
  Perform a Release (Optimized) build.
  <br><br>

  <dt><tt>gmake ENABLE_OPTIMIZED=1 DISABLE_ASSERTIONS=1</tt>
  <dd>
  Perform a Release (Optimized) build without assertions enabled.
  <br><br>

  <dt><tt>gmake ENABLE_PROFILING=1</tt>
  <dd>
  Perform a Profiling build.
  <br><br>

  <dt><tt>gmake VERBOSE=1</tt>
  <dd>
  Print what <tt>gmake</tt> is doing on standard output.
  <br><br>

  <dt><tt>gmake TOOL_VERBOSE=1</tt></dt>
  <dd>Ask each tool invoked by the makefiles to print out what it is doing on 
  the standard output. This also implies <tt>VERBOSE=1</tt>.
  <br><br></dd>
</dl>

<p>Every directory in the LLVM object tree includes a <tt>Makefile</tt> to build
it and any subdirectories that it contains.  Entering any directory inside the
LLVM object tree and typing <tt>gmake</tt> should rebuild anything in or below
that directory that is out of date.</p>

</div>

<!-- ======================================================================= -->
<div class="doc_subsection">
  <a name="cross-compile">Cross-Compiling LLVM</a>
</div>

<div class="doc_text">
  <p>It is possible to cross-compile LLVM. That is, you can create LLVM
  executables and libraries for a platform different than the one one which you
  are compiling.  To do this, a few additional steps are 
  required. <sup><a href="#ccn_1">1</a></sup> To cross-compile LLVM, use
  these instructions:</p>
  <ol>
    <li>Configure and build LLVM as a native compiler. You will need
    just <tt>TableGen</tt> from that build.
      <ul>
        <li>If you have <tt>$LLVM_OBJ_ROOT=$LLVM_SRC_ROOT</tt> just execute 
          <tt>make -C utils/TableGen</tt> after configuring.</li>
        <li>Otherwise you will need to monitor building process and terminate 
          it just after <tt>TableGen</tt> was built.</li>
      </ul>
    </li>
    <li>Copy the TableGen binary to somewhere safe (out of your build tree).
    </li>
    <li>Configure LLVM to build with a cross-compiler. To do this, supply the
    configure script with <tt>--build</tt> and <tt>--host</tt> options that
    are different. The values of these options must be legal target triples 
    that your GCC compiler supports.</li>
    <li>Put the saved <tt>TableGen</tt> executable into the
    into <tt>$LLVM_OBJ_ROOT/{BUILD_TYPE}/bin</tt> directory (e.g. into 
    <tt>.../Release/bin</tt> for a Release build).</li>
    <li>Build LLVM  as usual.</li>
  </ol>
  <p>The result of such a build will produce executables that are not executable
  on your build host (--build option) but can be executed on your compile host
  (--host option).</p>
  <p><b>Notes:</b></p>
  <div class="doc_notes">
    <ol>
      <li><a name="ccn_1">Cross-compiling</a> was tested only with Linux as 
      build platform and Windows as host using mingw32 cross-compiler. Other
      combinations have not been tested.</li>
    </ol>
  </div>
</div>

<!-- ======================================================================= -->
<div class="doc_subsection">
  <a name="objfiles">The Location of LLVM Object Files</a>
</div>

<div class="doc_text">

<p>The LLVM build system is capable of sharing a single LLVM source tree among
several LLVM builds.  Hence, it is possible to build LLVM for several different
platforms or configurations using the same source tree.</p>

<p>This is accomplished in the typical autoconf manner:</p>

<ul>
  <li><p>Change directory to where the LLVM object files should live:</p>

      <div class="doc_code"><pre>% cd <i>OBJ_ROOT</i></pre></div></li>

  <li><p>Run the <tt>configure</tt> script found in the LLVM source
      directory:</p>

      <div class="doc_code"><pre>% <i>SRC_ROOT</i>/configure</pre></div></li>
</ul>

<p>The LLVM build will place files underneath <i>OBJ_ROOT</i> in directories
named after the build type:</p>

<dl>
  <dt>Debug Builds
  <dd>
  <dl>
    <dt>Tools
    <dd><tt><i>OBJ_ROOT</i>/Debug/bin</tt>
    <dt>Libraries
    <dd><tt><i>OBJ_ROOT</i>/Debug/lib</tt>
  </dl>
  <br><br>

  <dt>Release Builds
  <dd>
  <dl>
    <dt>Tools
    <dd><tt><i>OBJ_ROOT</i>/Release/bin</tt>
    <dt>Libraries
    <dd><tt><i>OBJ_ROOT</i>/Release/lib</tt>
  </dl>
  <br><br>

  <dt>Profile Builds
  <dd>
  <dl>
    <dt>Tools
    <dd><tt><i>OBJ_ROOT</i>/Profile/bin</tt>
    <dt>Libraries
    <dd><tt><i>OBJ_ROOT</i>/Profile/lib</tt>
  </dl>
</dl>

</div>

<!-- ======================================================================= -->
<div class="doc_subsection">
  <a name="optionalconfig">Optional Configuration Items</a>
</div>

<div class="doc_text">

<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>"
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
first command may not be required if you are already using the module):</p>

<div class="doc_code">
<pre>
$ mount -t binfmt_misc none /proc/sys/fs/binfmt_misc
$ echo ':llvm:M::llvm::/path/to/lli:' &gt; /proc/sys/fs/binfmt_misc/register
$ chmod u+x hello.bc   (if needed)
$ ./hello.bc
</pre>
</div>

<p>
This allows you to execute LLVM bitcode files directly.  Thanks to Jack
Cummings for pointing this out!
</p>

</div>


<!-- *********************************************************************** -->
<div class="doc_section">
  <a name="layout"><b>Program Layout</b></a>
</div>
<!-- *********************************************************************** -->

<div class="doc_text">

<p>One useful source of information about the LLVM source base is the LLVM <a
href="http://www.doxygen.org">doxygen</a> documentation available at <tt><a
href="http://llvm.org/doxygen/">http://llvm.org/doxygen/</a></tt>.
The following is a brief introduction to code layout:</p>

</div>

<!-- ======================================================================= -->
<div class="doc_subsection"><a name="examples"><tt>llvm/examples</tt></a></div>
<div class="doc_text">
  <p>This directory contains some simple examples of how to use the LLVM IR and
  JIT.</p>
</div>

<!-- ======================================================================= -->
<div class="doc_subsection"><a name="include"><tt>llvm/include</tt></a></div>
<div class="doc_text">

<p>This directory contains public header files exported from the LLVM
library. The three main subdirectories of this directory are:</p>

<dl>
  <dt><tt><b>llvm/include/llvm</b></tt></dt>
  <dd>This directory contains all of the LLVM specific header files.  This 
  directory also has subdirectories for different portions of LLVM: 
  <tt>Analysis</tt>, <tt>CodeGen</tt>, <tt>Target</tt>, <tt>Transforms</tt>, 
  etc...</dd>

  <dt><tt><b>llvm/include/llvm/Support</b></tt></dt>
  <dd>This directory contains generic support libraries that are provided with 
  LLVM but not necessarily specific to LLVM. For example, some C++ STL utilities 
  and a Command Line option processing library store their header files here.
  </dd>

  <dt><tt><b>llvm/include/llvm/Config</b></tt></dt>
  <dd>This directory contains header files configured by the <tt>configure</tt> 
  script.  They wrap "standard" UNIX and C header files.  Source code can 
  include these header files which automatically take care of the conditional 
  #includes that the <tt>configure</tt> script generates.</dd>
</dl>
</div>

<!-- ======================================================================= -->
<div class="doc_subsection"><a name="lib"><tt>llvm/lib</tt></a></div>
<div class="doc_text">

<p>This directory contains most of the source files of the LLVM system. In LLVM,
almost all code exists in libraries, making it very easy to share code among the
different <a href="#tools">tools</a>.</p>

<dl>
  <dt><tt><b>llvm/lib/VMCore/</b></tt></dt>
  <dd> This directory holds the core LLVM source files that implement core 
  classes like Instruction and BasicBlock.</dd>

  <dt><tt><b>llvm/lib/AsmParser/</b></tt></dt>
  <dd>This directory holds the source code for the LLVM assembly language parser 
  library.</dd>

  <dt><tt><b>llvm/lib/BitCode/</b></tt></dt>
  <dd>This directory holds code for reading and write LLVM bitcode.</dd>

  <dt><tt><b>llvm/lib/Analysis/</b></tt><dd>This directory contains a variety of
  different program analyses, such as Dominator Information, Call Graphs,
  Induction Variables, Interval Identification, Natural Loop Identification,
  etc.</dd>

  <dt><tt><b>llvm/lib/Transforms/</b></tt></dt>
  <dd> This directory contains the source code for the LLVM to LLVM program 
  transformations, such as Aggressive Dead Code Elimination, Sparse Conditional 
  Constant Propagation, Inlining, Loop Invariant Code Motion, Dead Global 
  Elimination, and many others.</dd>

  <dt><tt><b>llvm/lib/Target/</b></tt></dt>
  <dd> This directory contains files that describe various target architectures
  for code generation.  For example, the <tt>llvm/lib/Target/X86</tt> 
  directory holds the X86 machine description while
  <tt>llvm/lib/Target/CBackend</tt> implements the LLVM-to-C converter.</dd>
    
  <dt><tt><b>llvm/lib/CodeGen/</b></tt></dt>
  <dd> This directory contains the major parts of the code generator: Instruction 
  Selector, Instruction Scheduling, and Register Allocation.</dd>

  <dt><tt><b>llvm/lib/Debugger/</b></tt></dt>
  <dd> This directory contains the source level debugger library that makes 
  it possible to instrument LLVM programs so that a debugger could identify 
  source code locations at which the program is executing.</dd>

  <dt><tt><b>llvm/lib/ExecutionEngine/</b></tt></dt>
  <dd> This directory contains libraries for executing LLVM bitcode directly 
  at runtime in both interpreted and JIT compiled fashions.</dd>

  <dt><tt><b>llvm/lib/Support/</b></tt></dt>
  <dd> This directory contains the source code that corresponds to the header 
  files located in <tt>llvm/include/Support/</tt>.</dd>

  <dt><tt><b>llvm/lib/System/</b></tt></dt>
  <dd>This directory contains the operating system abstraction layer that
  shields LLVM from platform-specific coding.</dd>
</dl>

</div>

<!-- ======================================================================= -->
<div class="doc_subsection"><a name="projects"><tt>llvm/projects</tt></a></div>
<div class="doc_text">
  <p>This directory contains projects that are not strictly part of LLVM but are
  shipped with LLVM. This is also the directory where you should create your own
  LLVM-based projects. See <tt>llvm/projects/sample</tt> for an example of how
  to set up your own project.</p>
</div>

<!-- ======================================================================= -->
<div class="doc_subsection"><a name="runtime"><tt>llvm/runtime</tt></a></div>
<div class="doc_text">

<p>This directory contains libraries which are compiled into LLVM bitcode and
used when linking programs with the GCC front end.  Most of these libraries are
skeleton versions of real libraries; for example, libc is a stripped down
version of glibc.</p>

<p>Unlike the rest of the LLVM suite, this directory needs the LLVM GCC front
end to compile.</p>

</div>

<!-- ======================================================================= -->
<div class="doc_subsection"><a name="test"><tt>llvm/test</tt></a></div>
<div class="doc_text">
  <p>This directory contains feature and regression tests and other basic sanity
  checks on the LLVM infrastructure. These are intended to run quickly and cover
  a lot of territory without being exhaustive.</p>
</div>

<!-- ======================================================================= -->
<div class="doc_subsection"><a name="llvmtest"><tt>test-suite</tt></a></div>
<div class="doc_text">
  <p>This is not a directory in the normal llvm module; it is a separate
  Subversion
  module that must be checked out (usually to <tt>projects/test-suite</tt>). 
  This
  module contains a comprehensive correctness, performance, and benchmarking
  test
  suite for LLVM. It is a separate Subversion module because not every LLVM 
  user is
  interested in downloading or building such a comprehensive test suite. For
  further details on this test suite, please see the 
  <a href="TestingGuide.html">Testing Guide</a> document.</p>
</div>

<!-- ======================================================================= -->
<div class="doc_subsection"><a name="tools"><tt>llvm/tools</tt></a></div>
<div class="doc_text">

<p>The <b>tools</b> directory contains the executables built out of the
libraries above, which form the main part of the user interface.  You can
always get help for a tool by typing <tt>tool_name --help</tt>.  The
following is a brief introduction to the most important tools.  More detailed
information is in the <a href="CommandGuide/index.html">Command Guide</a>.</p>

<dl>

  <dt><tt><b>bugpoint</b></tt></dt>
  <dd><tt>bugpoint</tt> is used to debug
  optimization passes or code generation backends by narrowing down the
  given test case to the minimum number of passes and/or instructions that
  still cause a problem, whether it is a crash or miscompilation. See <a
  href="HowToSubmitABug.html">HowToSubmitABug.html</a> for more information
  on using <tt>bugpoint</tt>.</dd>

  <dt><tt><b>llvmc</b></tt></dt>
  <dd>The LLVM Compiler Driver. This program can
  be configured to utilize both LLVM and non-LLVM compilation tools to enable
  pre-processing, translation, optimization, assembly, and linking of programs
  all from one command line. <tt>llvmc</tt> also takes care of processing the
  dependent libraries found in bitcode. This reduces the need to get the
  traditional <tt>-l&lt;name&gt;</tt> options right on the command line. Please
  note that this tool, while functional, is still experimental and not feature
  complete.</dd>

  <dt><tt><b>llvm-ar</b></tt></dt>
  <dd>The archiver produces an archive containing
  the given LLVM bitcode files, optionally with an index for faster
  lookup.</dd>
  
  <dt><tt><b>llvm-as</b></tt></dt>
  <dd>The assembler transforms the human readable LLVM assembly to LLVM 
  bitcode.</dd>

  <dt><tt><b>llvm-dis</b></tt></dt>
  <dd>The disassembler transforms the LLVM bitcode to human readable 
  LLVM assembly.</dd>

  <dt><tt><b>llvm-ld</b></tt></dt>
  <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 
  a single program.</dd>
  
  <dt><tt><b>lli</b></tt></dt>
  <dd><tt>lli</tt> is the LLVM interpreter, which
  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
  translates LLVM bitcode to a native code assembly file or to C code (with
  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 
  use LLVM as its backend instead of GCC's RTL backend. It can also emit LLVM 
  bitcode 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 Subversion module.</dd>

  <dt><tt><b>opt</b></tt></dt>
  <dd><tt>opt</tt> reads LLVM bitcode, applies a series of LLVM to LLVM 
  transformations (which are specified on the command line), and then outputs 
  the resultant bitcode.  The '<tt>opt --help</tt>' command is a good way to 
  get a list of the program transformations available in LLVM.<br>
  <dd><tt>opt</tt> can also be used to run a specific analysis on an input 
  LLVM bitcode file and print out the results.  It is primarily useful for 
  debugging analyses, or familiarizing yourself with what an analysis does.</dd>
</dl>
</div>

<!-- ======================================================================= -->
<div class="doc_subsection"><a name="utils"><tt>llvm/utils</tt></a></div>
<div class="doc_text">

<p>This directory contains utilities for working with LLVM source code, and some
of the utilities are actually required as part of the build process because they
are code generators for parts of LLVM infrastructure.</p>

<dl>
  <dt><tt><b>codegen-diff</b></tt> <dd><tt>codegen-diff</tt> is a script
  that finds differences between code that LLC generates and code that LLI
  generates. This is a useful tool if you are debugging one of them,
  assuming that the other generates correct output. For the full user
  manual, run <tt>`perldoc codegen-diff'</tt>.<br><br>

  <dt><tt><b>emacs/</b></tt> <dd>The <tt>emacs</tt> directory contains
  syntax-highlighting files which will work with Emacs and XEmacs editors,
  providing syntax highlighting support for LLVM assembly files and TableGen
  description files. For information on how to use the syntax files, consult
  the <tt>README</tt> file in that directory.<br><br>

  <dt><tt><b>getsrcs.sh</b></tt> <dd>The <tt>getsrcs.sh</tt> script finds
  and outputs all non-generated source files, which is useful if one wishes
  to do a lot of development across directories and does not want to
  individually find each file. One way to use it is to run, for example:
  <tt>xemacs `utils/getsources.sh`</tt> from the top of your LLVM source
  tree.<br><br>

  <dt><tt><b>llvmgrep</b></tt></dt>
  <dd>This little tool performs an "egrep -H -n" on each source file in LLVM and
  passes to it a regular expression provided on <tt>llvmgrep</tt>'s command
  line. This is a very efficient way of searching the source base for a
  particular regular expression.</dd>

  <dt><tt><b>makellvm</b></tt> <dd>The <tt>makellvm</tt> script compiles all
  files in the current directory and then compiles and links the tool that
  is the first argument. For example, assuming you are in the directory
  <tt>llvm/lib/Target/Sparc</tt>, if <tt>makellvm</tt> is in your path,
  simply running <tt>makellvm llc</tt> will make a build of the current
  directory, switch to directory <tt>llvm/tools/llc</tt> and build it,
  causing a re-linking of LLC.<br><br>

  <dt><tt><b>NewNightlyTest.pl</b></tt> and
  <tt><b>NightlyTestTemplate.html</b></tt> <dd>These files are used in a
  cron script to generate nightly status reports of the functionality of
  tools, and the results can be seen by following the appropriate link on
  the <a href="http://llvm.org/">LLVM homepage</a>.<br><br>

  <dt><tt><b>TableGen/</b></tt> <dd>The <tt>TableGen</tt> directory contains
  the tool used to generate register descriptions, instruction set
  descriptions, and even assemblers from common TableGen description
  files.<br><br>

  <dt><tt><b>vim/</b></tt> <dd>The <tt>vim</tt> directory contains
  syntax-highlighting files which will work with the VIM editor, providing
  syntax highlighting support for LLVM assembly files and TableGen
  description files. For information on how to use the syntax files, consult
  the <tt>README</tt> file in that directory.<br><br>

</dl>

</div>

<!-- ======================================================================= -->
<div class="doc_subsection"><a name="win32"><tt>llvm/win32</tt></a></div>
<div class="doc_text">
  <p>This directory contains build scripts and project files for use with 
  Visual C++. This allows developers on Windows to build LLVM without the need
  for Cygwin. The contents of this directory should be considered experimental
  at this time.
  </p>
</div>
<!-- *********************************************************************** -->
<div class="doc_section">
  <a name="tutorial">An Example Using the LLVM Tool Chain</a>
</div>
<!-- *********************************************************************** -->

<div class="doc_text">
<p>This section gives an example of using LLVM.  llvm-gcc3 is now obsolete,
so we only include instructiosn for llvm-gcc4.
</p>

<p><b>Note:</b> The <i>gcc4</i> frontend's invocation is <b><i>considerably different</i></b>
from the previous <i>gcc3</i> frontend. In particular, the <i>gcc4</i> frontend <b><i>does not</i></b>
create bitcode by default: <i>gcc4</i> produces native code. As the example below illustrates,
the '--emit-llvm' flag is needed to produce LLVM bitcode output. For <i>makefiles</i> and
<i>configure</i> scripts, the CFLAGS variable needs '--emit-llvm' to produce bitcode
output.</p>
</div>

<!-- ======================================================================= -->
<div class="doc_subsection"><a name="tutorial4">Example with llvm-gcc4</a></div>

<div class="doc_text">

<ol>
  <li><p>First, create a simple C file, name it 'hello.c':</p>

<div class="doc_code">
<pre>
#include &lt;stdio.h&gt;

int main() {
  printf("hello world\n");
  return 0;
}
</pre></div></li>

  <li><p>Next, compile the C file into a native executable:</p>

      <div class="doc_code"><pre>% llvm-gcc hello.c -o hello</pre></div>

      <p>Note that llvm-gcc works just like GCC by default.  The standard -S and
        -c arguments work as usual (producing a native .s or .o file,
        respectively).</p></li>

  <li><p>Next, compile the C file into a LLVM bitcode file:</p>

      <div class="doc_code">
      <pre>% llvm-gcc -O3 -emit-llvm hello.c -c -o hello.bc</pre></div>

      <p>The -emit-llvm option can be used with the -S or -c options to emit an
         LLVM ".ll" or ".bc" file (respectively) for the code.  This allows you
         to use the <a href="CommandGuide/index.html">standard LLVM tools</a> on
         the bitcode file.</p>

      <p>Unlike llvm-gcc3, llvm-gcc4 correctly responds to -O[0123] arguments.
         </p></li>

  <li><p>Run the program in both forms. To run the program, use:</p>
      
      <div class="doc_code"><pre>% ./hello</pre></div>
 
      <p>and</p>

      <div class="doc_code"><pre>% lli hello.bc</pre></div>

      <p>The second examples shows how to invoke the LLVM JIT, <a
       href="CommandGuide/html/lli.html">lli</a>.</p></li>

  <li><p>Use the <tt>llvm-dis</tt> utility to take a look at the LLVM assembly
      code:</p>

<div class="doc_code">
<pre>llvm-dis &lt; hello.bc | less</pre>
</div></li>

  <li><p>Compile the program to native assembly using the LLC code
      generator:</p>

      <div class="doc_code"><pre>% llc hello.bc -o hello.s</pre></div></li>

  <li><p>Assemble the native assembly language file into a program:</p>

<div class="doc_code">
<pre>
<b>Solaris:</b> % /opt/SUNWspro/bin/cc -xarch=v9 hello.s -o hello.native

<b>Others:</b>  % gcc hello.s -o hello.native
</pre>
</div></li>

  <li><p>Execute the native code program:</p>

      <div class="doc_code"><pre>% ./hello.native</pre></div>

      <p>Note that using llvm-gcc to compile directly to native code (i.e. when
         the -emit-llvm option is not present) does steps 6/7/8 for you.</p>
        </li>

</ol>

</div>


<!-- *********************************************************************** -->
<div class="doc_section">
  <a name="problems">Common Problems</a>
</div>
<!-- *********************************************************************** -->

<div class="doc_text">

<p>If you are having problems building or using LLVM, or if you have any other
general questions about LLVM, please consult the <a href="FAQ.html">Frequently
Asked Questions</a> page.</p>

</div>

<!-- *********************************************************************** -->
<div class="doc_section">
  <a name="links">Links</a>
</div>
<!-- *********************************************************************** -->

<div class="doc_text">

<p>This document is just an <b>introduction</b> on how to use LLVM to do
some simple things... there are many more interesting and complicated things
that you can do that aren't documented here (but we'll gladly accept a patch
if you want to write something up!).  For more information about LLVM, check
out:</p>

<ul>
  <li><a href="http://llvm.org/">LLVM homepage</a></li>
  <li><a href="http://llvm.org/doxygen/">LLVM doxygen tree</a></li>
  <li><a href="http://llvm.org/docs/Projects.html">Starting a Project
  that Uses LLVM</a></li>
</ul>

</div>

<!-- *********************************************************************** -->

<hr>
<address>
  <a href="http://jigsaw.w3.org/css-validator/check/referer"><img
  src="http://jigsaw.w3.org/css-validator/images/vcss-blue" alt="Valid CSS"></a>
  <a href="http://validator.w3.org/check/referer"><img
  src="http://www.w3.org/Icons/valid-html401-blue" alt="Valid HTML 4.01"></a>

  <a href="mailto:sabre@nondot.org">Chris Lattner</a><br>
  <a href="http://llvm.x10sys.com/rspencer/">Reid Spencer</a><br>
  <a href="http://llvm.org">The LLVM Compiler Infrastructure</a><br>
  Last modified: $Date$
</address>
</body>
</html>
