<!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-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>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<sup><a href="#pf_3">3</a></sup></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 .NET<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 don't link</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>
<a href="http://www.mingw.org/MinGWiki/">Download</a> and install 
bison (excl. M4.exe) and flex in that order. Build binutils-2.15 from source,
if necessary. Bison &amp; flex can be also grabbed from GNUWin32 sf.net 
project.</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://www.gnu.org/software/flex">Flex</a></td>
      <td>2.5.4</td>
      <td>LEX compiler</td>
    </tr>

    <tr>
      <td><a href="http://www.gnu.org/software/bison/bison.html">Bison</a></td>
      <td>1.28, 1.35, 1.75, 1.875d, 2.0, or 2.1<br>(not 1.85 or 1.875)</td>
      <td>YACC compiler</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>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>

</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-gcc4-x.y.source.tar.gz</tt></dt>
  <dd>Source release of the llvm-gcc4 front end.  See README.LLVM in the root
      directory for build instructions.<br/></dd>

  <dt><tt>llvm-gcc4-x.y-platform.tar.gz</tt></dt>
  <dd>Binary release of the llvm-gcc4 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 llvmgcc-<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" alt="Valid CSS!"></a>
  <a href="http://validator.w3.org/check/referer"><img
  src="http://www.w3.org/Icons/valid-html401" 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>
