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

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

<ul>
  <li><a href="#overview">Overview</a>
  <li><a href="#quickstart">Getting Started Quickly (A Summary)</a>
  <li><a href="#requirements">Requirements</a>
    <ol>
      <li><a href="#hardware">Hardware</a></li>
      <li><a href="#software">Software</a></li>
      <li><a href="#brokengcc">Broken versions of GCC and other tools</a></li>
    </ol></li>

  <li><a href="#starting">Getting Started with LLVM</a>
    <ol>
      <li><a href="#terminology">Terminology and Notation</a></li>
      <li><a href="#environment">Setting Up Your Environment</a></li>
      <li><a href="#unpack">Unpacking the LLVM Archives</a></li>
      <li><a href="#checkout">Checkout LLVM from Subversion</a></li>
      <li><a href="#installcf">Install the GCC Front End</a></li>
      <li><a href="#config">Local LLVM Configuration</a></li>
      <li><a href="#compile">Compiling the LLVM Suite Source Code</a></li>
      <li><a href="#cross-compile">Cross-Compiling LLVM</a></li>
      <li><a href="#objfiles">The Location of LLVM Object Files</a></li>
      <li><a href="#optionalconfig">Optional Configuration Items</a></li>
    </ol></li>

  <li><a href="#layout">Program layout</a>
    <ol>
      <li><a href="#examples"><tt>llvm/examples</tt></a></li>
      <li><a href="#include"><tt>llvm/include</tt></a></li>
      <li><a href="#lib"><tt>llvm/lib</tt></a></li>
      <li><a href="#projects"><tt>llvm/projects</tt></a></li>
      <li><a href="#runtime"><tt>llvm/runtime</tt></a></li>
      <li><a href="#test"><tt>llvm/test</tt></a></li>
      <li><a href="#llvmtest"><tt>llvm-test</tt></a></li>
      <li><a href="#tools"><tt>llvm/tools</tt></a></li>
      <li><a href="#utils"><tt>llvm/utils</tt></a></li>
      <li><a href="#win32"><tt>llvm/win32</tt></a></li>
    </ol></li>

  <li><a href="#tutorial">An Example Using the LLVM Tool Chain</a>
      <ol>
         <li><a href="#tutorial4">Example with llvm-gcc4</a></li>
      </ol>
  <li><a href="#problems">Common Problems</a>
  <li><a href="#links">Links</a>
</ul>

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


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

<div class="doc_text">

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

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

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

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

</div>

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

<div class="doc_text">

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

<ol>
  <li>Read the documentation.</li>
  <li>Read the documentation.</li>
  <li>Remember that you were warned twice about reading the documentation.</li>
  <li>Install the llvm-gcc-4.2 front end if you intend to compile C or C++
      (see <a href="#installcf">Install the GCC Front End</a> for details):</li>
    <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>
    </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 the testsuite 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>

<!-- *********************************************************************** -->
<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>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>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></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>
</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">In general, LLVM modules requiring dynamic linking can
    not be built on Windows. However, you can build LLVM tools using
    <i>"make tools-only"</i>.</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>

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

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

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

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

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

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

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

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

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

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

    <tr>
      <td><a href="http://www.gnu.org/software/autoconf">GNU Autoconf</a></td>
      <td>2.60</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.6</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.59), and consequently, GNU M4 (version 1.4 
      or higher). You will also need automake (1.9.2). We only use aclocal 
      from that package.</a></li>
  </ol>
  </div>
  
  <p>Additionally, your compilation host is expected to have the usual 
  plethora of Unix utilities. Specifically:</p>
  <ul>
    <li><b>ar</b> - archive library builder</li>
    <li><b>bzip2*</b> - bzip2 command for distribution generation</li>
    <li><b>bunzip2*</b> - bunzip2 command for distribution checking</li>
    <li><b>chmod</b> - change permissions on a file</li>
    <li><b>cat</b> - output concatenation utility</li>
    <li><b>cp</b> - copy files</li>
    <li><b>date</b> - print the current date/time </li>
    <li><b>echo</b> - print to standard output</li>
    <li><b>egrep</b> - extended regular expression search utility</li>
    <li><b>find</b> - find files/dirs in a file system</li>
    <li><b>grep</b> - regular expression search utility</li>
    <li><b>gzip*</b> - gzip command for distribution generation</li>
    <li><b>gunzip*</b> - gunzip command for distribution checking</li>
    <li><b>install</b> - install directories/files </li>
    <li><b>mkdir</b> - create a directory</li>
    <li><b>mv</b> - move (rename) files</li>
    <li><b>ranlib</b> - symbol table builder for archive libraries</li>
    <li><b>rm</b> - remove (delete) files and directories</li>
    <li><b>sed</b> - stream editor for transforming output</li>
    <li><b>sh</b> - Bourne shell for make build scripts</li>
    <li><b>tar</b> - tape archive for distribution generation</li>
    <li><b>test</b> - test things in file system</li>
    <li><b>unzip*</b> - unzip command for distribution checking</li>
    <li><b>zip*</b> - zip command for distribution generation</li>
  </ul>
</div>

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

<div class="doc_text">

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

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

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

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

<p><b>Cygwin GCC 3.3.3</b>: The version of GCC 3.3.3 commonly shipped with 
   Cygwin does not work.  Please <a href="GCCFEBuildInstrs.html#cygwin">upgrade 
   to a newer version</a> if possible.</p>
<p><b>SuSE GCC 3.3.3</b>: The version of GCC 3.3.3 shipped with SuSE 9.1 (and 
   possibly others) does not compile LLVM correctly (it appears that exception 
   handling is broken in some cases).  Please download the FSF 3.3.3 or upgrade
   to a newer version of GCC.</p>
<p><b>GCC 3.4.0 on linux/x86 (32-bit)</b>: GCC miscompiles portions of the 
   code generator, causing an infinite loop in the llvm-gcc build when built
   with optimizations enabled (i.e. a release build).</p>
<p><b>GCC 3.4.2 on linux/x86 (32-bit)</b>: GCC miscompiles portions of the 
   code generator at -O3, as with 3.4.0.  However gcc 3.4.2 (unlike 3.4.0)
   correctly compiles LLVM at -O2.  A work around is to build release LLVM
   builds with "make ENABLE_OPTIMIZED=1 OPTIMIZE_OPTION=-O2 ..."</p>
<p><b>GCC 3.4.x on X86-64/amd64</b>: GCC <a href="http://llvm.org/PR1056">
   miscompiles portions of LLVM</a>.</p>
<p><b>GCC 3.4.4 (CodeSourcery ARM 2005q3-2)</b>: this compiler miscompiles LLVM
   when building with optimizations enabled.  It appears to work with 
   "<tt>make ENABLE_OPTIMIZED=1 OPTIMIZE_OPTION=-O1</tt>" or build a debug
   build.</p>
<p><b>IA-64 GCC 4.0.0</b>: The IA-64 version of GCC 4.0.0 is known to
   miscompile LLVM.</p>
<p><b>Apple Xcode 2.3</b>: GCC crashes when compiling LLVM at -O3 (which is the
   default with ENABLE_OPTIMIZED=1.  To work around this, build with 
   "ENABLE_OPTIMIZED=1 OPTIMIZE_OPTION=-O2".</p>
<p><b>GCC 4.1.1</b>: GCC fails to build LLVM with template concept check errors
      compiling some files.  At the time of this writing, GCC mainline (4.2)
      did not share the problem.</p>
<p><b>GCC 4.1.1 on X86-64/amd64</b>: GCC <a href="http://llvm.org/PR1063">
   miscompiles portions of LLVM</a> when compiling llvm itself into 64-bit 
   code.  LLVM will appear to mostly work but will be buggy, e.g. failing 
   portions of its testsuite.</p>
<p><b>GCC 4.1.2 on OpenSUSE</b>: Seg faults during libstdc++ build and on x86_64
platforms compiling md5.c gets a mangled constant.</p>
<p><b>GCC 4.1.2 (20061115 (prerelease) (Debian 4.1.1-21)) on Debian</b>: Appears
to miscompile parts of LLVM 2.4. One symptom is ValueSymbolTable complaining
about symbols remaining in the table on destruction.</p>
<p><b>GCC 4.1.2 20071124 (Red Hat 4.1.2-42)</b>: Suffers from the same symptoms
as the previous one. It appears to work with ENABLE_OPTIMIZED=0 (the default).</p>
<p><b>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>GNU ld 2.16.X</b>. Some 2.16.X versions of the ld linker will produce very
long warning messages complaining that some ".gnu.linkonce.t.*" symbol was
defined in a discarded section. You can safely ignore these messages as they are
erroneous and the linkage is correct.  These messages disappear using ld
2.17.</p>

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

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

</div>



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

<div class="doc_text">

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

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

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

<div class="doc_text">

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

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

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

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

</div>

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

<div class="doc_text">

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

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

</div>

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

<div class="doc_text">

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

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

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

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

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

</dl>

</div>

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

<div class="doc_text">

<p>If you have access to our Subversion repository, you can get a fresh copy of
the entire source code.  All you need to do is check it out from 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 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 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 (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 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 (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 llvm-test.  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 
llvm-test 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>

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

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

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

<!-- ======================================================================= -->
<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::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>
</p>

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

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

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

<div class="doc_text">

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

</ol>

</div>


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

<div class="doc_text">

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

</div>

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

<div class="doc_text">

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

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

</div>

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

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

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