<!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>

<h1>
  Getting Started with the LLVM System  
</h1>

<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="#git_mirror">LLVM GIT mirror</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="#test-suite"><tt>test-suite</tt></a></li>
      <li><a href="#tools"><tt>llvm/tools</tt></a></li>
      <li><a href="#utils"><tt>llvm/utils</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>


<!-- *********************************************************************** -->
<h2>
  <a name="overview">Overview</a>
</h2>
<!-- *********************************************************************** -->

<div>

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

<p>First, LLVM comes in three 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 basic regression tests 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 Test Suite.  It is a suite of programs
with a testing harness that can be used to further test LLVM's functionality
and performance.
</p>

</div>

<!-- *********************************************************************** -->
<h2>
  <a name="quickstart">Getting Started Quickly (A Summary)</a>
</h2>
<!-- *********************************************************************** -->

<div>

<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++
      (see <a href="#installcf">Install the GCC Front End</a> for details):
    <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><tt><i>install-binutils-binary-from-MinGW</i></tt> (Windows only)</li>
	  <li>Note: If the binary extension is "<tt>.bz</tt>" use <tt>bunzip2</tt> instead of <tt>gunzip</tt>.</li>
	  <li>Note: On Windows, use <a href="http://www.7-zip.org/">7-Zip</a> or a similar archiving tool.</li>
	  <li>Add <tt>llvm-gcc</tt>'s "<tt>bin</tt>" directory to your <tt>PATH</tt> environment 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>
      <li><tt>mv llvm-test-<i>version</i> test-suite</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.  This is only needed if you
        want to run test-suite or do some special kinds of LLVM builds.</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>

<!-- *********************************************************************** -->
<h2>
  <a name="requirements">Requirements</a>
</h2>
<!-- *********************************************************************** -->

<div>

<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>

<!-- ======================================================================= -->
<h3>
  <a name="hardware">Hardware</a>
</h3>

<div>

<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>AuroraUX</td>
  <td>x86<sup><a href="#pf_1">1</a></sup></td>
  <td>GCC</td>
</tr>
<tr>
  <td>Linux</td>
  <td>x86<sup><a href="#pf_1">1</a></sup></td>
  <td>GCC</td>
</tr>
<tr>
  <td>Linux</td>
  <td>amd64</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>FreeBSD</td>
  <td>amd64</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>,
     <a href="#pf_11">11</a></sup></td>
  <td>GCC 3.4.X, binutils 2.20</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>, <a href="#pf_10">10</a>,
     <a href="#pf_11">11</a></sup></td>
  <td>GCC 3.4.X, binutils 2.20</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>
<tr>
  <td>Windows x64</td>
  <td>x86-64</td>
  <td>mingw-w64's GCC-4.5.x<sup><a href="#pf_12">12</a></sup></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 2.20 or later is required to build the assembler
    generated by LLVM properly.</a></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>
<li><a name="pf_10">For MSYS/MinGW on Windows, be sure to install the MSYS
    version of the perl package, and be sure it appears in your path
    before any Windows-based versions such as Strawberry Perl and
    ActivePerl, as these have Windows-specifics that will cause the
    build to fail.</a></li>
<li><a name="pf_11">To use LLVM modules on Win32-based system,
    you may configure LLVM with <i>&quot;--enable-shared&quot;</i>.</a></li>
<li><a name="pf_12">To compile SPU backend, you need to add
    <tt>&quot;LDFLAGS=-Wl,--stack,16777216&quot;</tt> to configure.</a></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 pass <tt>ONLY_TOOLS="tools you need"</tt> to make.  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>

<!-- ======================================================================= -->
<h3>
  <a name="software">Software</a>
</h3>
<div>
  <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>

    <!-- FIXME:
    Do we support dg?
    Are DejaGnu and expect obsolete?
    Shall we mention Python? -->

    <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.61</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.10</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.22</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.61), and consequently, GNU M4 (version 1.4 
      or higher). You will also need automake (1.10). 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>

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

<div>

<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>Cygwin GCC 4.3.2 20080827 (beta) 2</b>:
  Users <a href="http://llvm.org/PR4145">reported</a> various problems related
  with link errors when using this GCC version.</p>
<p><b>Debian GCC 4.3.2 on X86</b>: Crashes building some files in LLVM 2.6.</p>
<p><b>GCC 4.3.3 (Debian 4.3.3-10) on ARM</b>: Miscompiles parts of LLVM 2.6
when optimizations are turned on. The symptom is an infinite loop in
FoldingSetImpl::RemoveNode while running the code generator.</p>
<p><b>GCC 4.3.5 and GCC 4.4.5 on ARM</b>: These can miscompile <tt>value >>
1</tt> even at -O0. A test failure in <tt>test/Assembler/alignstack.ll</tt> is
one symptom of the problem.
<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>

<!-- *********************************************************************** -->
<h2>
  <a name="starting">Getting Started with LLVM</a>
</h2>
<!-- *********************************************************************** -->

<div>

<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>

<!-- ======================================================================= -->
<h3>
  <a name="terminology">Terminology and Notation</a>
</h3>

<div>

<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>

<!-- ======================================================================= -->
<h3>
  <a name="environment">Setting Up Your Environment</a>
</h3>

<div>

<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>

<!-- ======================================================================= -->
<h3>
  <a name="unpack">Unpacking the LLVM Archives</a>
</h3>

<div>

<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>

<!-- ======================================================================= -->
<h3>
  <a name="checkout">Checkout LLVM from Subversion</a>
</h3>

<div>

<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 Subversion 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 3.0: <b>RELEASE_30/final</b></li>
<li>Release 2.9: <b>RELEASE_29/final</b></li>
<li>Release 2.8: <b>RELEASE_28</b></li>
<li>Release 2.7: <b>RELEASE_27</b></li>
<li>Release 2.6: <b>RELEASE_26</b></li>
<li>Release 2.5: <b>RELEASE_25</b></li>
<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 test-suite
</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>

<!-- ======================================================================= -->
<h3>
  <a name="git_mirror">GIT mirror</a>
</h3>

<div>

<p>GIT mirrors are available for a number of LLVM subprojects. These mirrors
  sync automatically with each Subversion commit and contain all necessary
  git-svn marks (so, you can recreate git-svn metadata locally). Note that right
  now mirrors reflect only <tt>trunk</tt> for each project. You can do the
  read-only GIT clone of LLVM via:</p>

<pre class="doc_code">
git clone http://llvm.org/git/llvm.git
</pre>

<p>If you want to check out clang too, run:</p>

<pre class="doc_code">
git clone http://llvm.org/git/llvm.git
cd llvm/tools
git clone http://llvm.org/git/clang.git
</pre>

<p>
Since the upstream repository is in Subversion, you should use
<tt>&quot;git pull --rebase&quot;</tt>
instead of <tt>&quot;git pull&quot;</tt> to avoid generating a non-linear
history in your clone.
To configure <tt>&quot;git pull&quot;</tt> to pass <tt>--rebase</tt> by default
on the master branch, run the following command:
</p>

<pre class="doc_code">
git config branch.master.rebase true
</pre>

<h4>Sending patches with Git</h4>
<div>
<p>
Please read <a href="DeveloperPolicy.html#patches">Developer Policy</a>, too.
</p>

<p>
Assume <tt>master</tt> points the upstream and <tt>mybranch</tt> points your
working branch, and <tt>mybranch</tt> is rebased onto <tt>master</tt>.
At first you may check sanity of whitespaces:
</p>

<pre class="doc_code">
git diff --check master..mybranch
</pre>

<p>
The easiest way to generate a patch is as below:
</p>

<pre class="doc_code">
git diff master..mybranch &gt; /path/to/mybranch.diff
</pre>

<p>
It is a little different from svn-generated diff. git-diff-generated diff has
prefixes like <tt>a/</tt> and <tt>b/</tt>. Don't worry, most developers might
know it could be accepted with <tt>patch -p1 -N</tt>.
</p>

<p>
But you may generate patchset with git-format-patch. It generates
by-each-commit patchset. To generate patch files to attach to your article:
</p>

<pre class="doc_code">
git format-patch --no-attach master..mybranch -o /path/to/your/patchset
</pre>

<p>
If you would like to send patches directly, you may use git-send-email or
git-imap-send. Here is an example to generate the patchset in Gmail's [Drafts].
</p>

<pre class="doc_code">
git format-patch --attach master..mybranch --stdout | git imap-send
</pre>

<p>
Then, your .git/config should have [imap] sections.
</p>

<pre class="doc_code">
[imap]
        host = imaps://imap.gmail.com
        user = <em>your.gmail.account</em>@gmail.com
        pass = <em>himitsu!</em>
        port = 993
        sslverify = false
; in English
        folder = "[Gmail]/Drafts"
; example for Japanese, "Modified UTF-7" encoded.
        folder = "[Gmail]/&amp;Tgtm+DBN-"
</pre>

</div>

<h4>For developers to work with git-svn</h4>
<div>

<p>To set up clone from which you can submit code using
   <tt>git-svn</tt>, run:</p>

<pre class="doc_code">
git clone http://llvm.org/git/llvm.git
cd llvm
git svn init https://llvm.org/svn/llvm-project/llvm/trunk --username=&lt;username>
git config svn-remote.svn.fetch :refs/remotes/origin/master
git svn rebase -l  # -l avoids fetching ahead of the git mirror.

# If you have clang too:
cd tools
git clone http://llvm.org/git/clang.git
cd clang
git svn init https://llvm.org/svn/llvm-project/cfe/trunk --username=&lt;username>
git config svn-remote.svn.fetch :refs/remotes/origin/master
git svn rebase -l
</pre>

<p>To update this clone without generating git-svn tags that conflict
with the upstream git repo, run:</p>

<pre class="doc_code">
git fetch && (cd tools/clang && git fetch)  # Get matching revisions of both trees.
git checkout master
git svn rebase -l
(cd tools/clang &&
 git checkout master &&
 git svn rebase -l)
</pre>

<p>This leaves your working directories on their master branches, so
you'll need to <tt>checkout</tt> each working branch individually and
<tt>rebase</tt> it on top of its parent branch.  (Note: This script is
intended for relative newbies to git.  If you have more experience,
you can likely improve on it.)</p>

<p>The git-svn metadata can get out of sync after you mess around with
branches and <code>dcommit</code>. When that happens, <code>git svn
dcommit</code> stops working, complaining about files with uncommitted
changes. The fix is to rebuild the metadata:</p>

<pre class="doc_code">
rm -rf .git/svn
git svn rebase -l
</pre>

</div>

</div>

<!-- ======================================================================= -->
<h3>
  <a name="installcf">Install the GCC Front End</a>
</h3>

<div>

<p>Before configuring and compiling the LLVM suite (or if you want to use just the LLVM
GCC front end) you can optionally extract the front end from the binary distribution.
It is used for running the LLVM test-suite 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 (on Windows, use an archival tool
like <a href="http://www.7-zip.org/">7-zip</a> that understands gzipped tars):</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, if you're using a *nix-based system, add a symlink for
<tt>llvm-gcc</tt> and <tt>llvm-g++</tt> to some directory in your path.  If you're using a
Windows-based system, add the <tt>bin</tt> subdirectory of your front end installation directory
to your <tt>PATH</tt> environment variable.  For example, if you uncompressed the binary to
<tt>c:\llvm-gcc</tt>, add <tt>c:\llvm-gcc\bin</tt> to your <tt>PATH</tt>.</p>

<p>If you now want to build LLVM from source, when you configure LLVM, it will 
automatically detect <tt>llvm-gcc</tt>'s presence (if it is in your path) enabling its
use in test-suite.  Note that you can always build or install <tt>llvm-gcc</tt> at any
point after building the main LLVM repository: just reconfigure llvm and 
test-suite will pick it up.
</p>

<p>As a convenience for Windows users, the front end binaries for MinGW/x86 include
versions of the required w32api and mingw-runtime binaries.  The last remaining step for
Windows users is to simply uncompress the binary binutils package from
<a href="http://mingw.org/">MinGW</a> into your front end installation directory.  While the
front end installation steps are not quite the same as a typical manual MinGW installation,
they should be similar enough to those who have previously installed MinGW on Windows systems.</p>

<p>To install binutils on Windows:</p>

<ol>
  <li><tt><i>download GNU Binutils from <a href="http://sourceforge.net/projects/mingw/files/">MinGW Downloads</a></i></tt></li>
  <li><tt>cd <i>where-you-uncompressed-the-front-end</i></tt></li>
  <li><tt><i>uncompress archived binutils directories (not the tar file) into the current directory</i></tt></li>
</ol>

<p>The binary versions of the LLVM 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.  In cases like these, you may want to try
<a href="GCCFEBuildInstrs.html">building the GCC front end from source</a>.  Thankfully,
this is much easier now than it was in the past.</p>

<p>We also do not currently support updating of the GCC front end by manually overlaying
newer versions of the w32api and mingw-runtime binary packages that may become available
from MinGW.  At this time, it's best to think of the MinGW LLVM GCC front end binary as
a self-contained convenience package that requires Windows users to simply download and
uncompress the GNU Binutils binary package from the MinGW project.</p>

<p>Regardless of your platform, if you discover that installing the LLVM GCC front end
binaries is not as easy as previously described, or you would like to suggest improvements,
please let us know how you would like to see things improved by dropping us a note on our
<a href="http://llvm.org/docs/#maillist">mailing list</a>.</p>

</div>

<!-- ======================================================================= -->
<h3>
  <a name="config">Local LLVM Configuration</a>
</h3>

<div>

  <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 (debugging symbols are removed
    and GCC optimization flags are enabled). Note that this is the default 
    setting     if you are using the LLVM distribution. The default behavior 
    of an Subversion checkout 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>

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

<div>

<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 is using an Subversion checkout and 
    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.  To get a Debug Build using the
    LLVM distribution the <tt>--disable-optimized</tt> option must be passed
    to <tt>configure</tt>.
    <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. 
    Note that Release Builds are default when using an LLVM distribution.
    <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_OPTIMIZED=0</tt>
  <dd>
  Perform a Debug build.
  <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>

<!-- ======================================================================= -->
<h3>
  <a name="cross-compile">Cross-Compiling LLVM</a>
</h3>

<div>
  <p>It is possible to cross-compile LLVM itself. That is, you can create LLVM
  executables and libraries to be hosted on a platform different from the
  platform where they are build (a Canadian Cross build). To configure a
  cross-compile, 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.</p>

  <p>The result of such a build is executables that are not runnable on
  on the build host (--build option) but can be executed on the compile host
  (--host option).</p>
</div>

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

<div>

<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 with assertions enabled (the default)
  <dd>
  <dl>
    <dt>Tools
    <dd><tt><i>OBJ_ROOT</i>/Debug+Asserts/bin</tt>
    <dt>Libraries
    <dd><tt><i>OBJ_ROOT</i>/Debug+Asserts/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>

<!-- ======================================================================= -->
<h3>
  <a name="optionalconfig">Optional Configuration Items</a>
</h3>

<div>

<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::BC::/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.  On Debian, you 
can also use this command instead of the 'echo' command above:
</p>

<div class="doc_code">
<pre>
$ sudo update-binfmts --install llvm /path/to/lli --magic 'BC'
</pre>
</div>

</div>

</div>

<!-- *********************************************************************** -->
<h2>
  <a name="layout">Program Layout</a>
</h2>
<!-- *********************************************************************** -->

<div>

<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>

<!-- ======================================================================= -->
<h3>
  <a name="examples"><tt>llvm/examples</tt></a>
</h3>

<div>
  <p>This directory contains some simple examples of how to use the LLVM IR and
  JIT.</p>
</div>

<!-- ======================================================================= -->
<h3>
  <a name="include"><tt>llvm/include</tt></a>
</h3>

<div>

<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>

<!-- ======================================================================= -->
<h3>
  <a name="lib"><tt>llvm/lib</tt></a>
</h3>

<div>

<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/MC/</b></tt></dt>
  <dd>(FIXME: T.B.D.)</dd>

  <!--FIXME: obsoleted -->
  <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/ADT/</tt>
  and <tt>llvm/include/Support/</tt>.</dd>
</dl>

</div>

<!-- ======================================================================= -->
<h3>
  <a name="projects"><tt>llvm/projects</tt></a>
</h3>

<div>
  <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>

<!-- ======================================================================= -->
<h3>
  <a name="runtime"><tt>llvm/runtime</tt></a>
</h3>

<div>

<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>

<!-- ======================================================================= -->
<h3>
  <a name="test"><tt>llvm/test</tt></a>
</h3>

<div>
  <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>

<!-- ======================================================================= -->
<h3>
  <a name="test-suite"><tt>test-suite</tt></a>
</h3>

<div>
  <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>

<!-- ======================================================================= -->
<h3>
  <a name="tools"><tt>llvm/tools</tt></a>
</h3>

<div>

<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>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. 
  It performs 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>

<!-- ======================================================================= -->
<h3>
  <a name="utils"><tt>llvm/utils</tt></a>
</h3>

<div>

<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>

<!-- *********************************************************************** -->
<h2>
  <a name="tutorial">An Example Using the LLVM Tool Chain</a>
</h2>
<!-- *********************************************************************** -->

<div>
<p>This section gives an example of using LLVM.  llvm-gcc3 is now obsolete,
so we only include instructions 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>

<!-- ======================================================================= -->
<h3>
  <a name="tutorial4">Example with llvm-gcc4</a>
</h3>

<div>

<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>

<!-- *********************************************************************** -->
<h2>
  <a name="problems">Common Problems</a>
</h2>
<!-- *********************************************************************** -->

<div>

<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>

<!-- *********************************************************************** -->
<h2>
  <a name="links">Links</a>
</h2>
<!-- *********************************************************************** -->

<div>

<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>
