<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <title>Getting Started with LLVM System</title>
  </head>

  <body bgcolor=white>
    <center><h1>Getting Started with the LLVM System<br><font size=3>By: <a
    href="mailto:gshi1@uiuc.edu">Guochun Shi</a>,
    <a href="mailto:sabre@nondot.org">Chris Lattner</a>,
    <a href="mailto:criswell@uiuc.edu">John Criswell</a>, 
    <a href="http://misha.brukman.net">Misha Brukman</a>, and
    <a href="http://www.cs.uiuc.edu/~vadve">Vikram Adve</a>
    </font></h1></center>

    <!--=====================================================================-->
    <h2><a name="Contents">Contents</a></h2>
    <!--=====================================================================-->

    <ul>
      <li><a href="#overview">Overview</a>
      <ol>
          <li><a href="#requirements">Requirements</a>
          <ol>
              <li><a href="#hardware">Hardware</a>
              <li><a href="#software">Software</a>
          </ol>
      </ol>
      <li><a href="#quickstart">Getting Started Quickly (A Summary)</a>
      <li><a href="#starting">Getting Started with LLVM</a>
        <ol>
          <li><a href="#terminology">Terminology and Notation</tt></a>
          <li><a href="#environment">Setting Up Your Environment</a>
          <li><a href="#unpack">Unpacking the LLVM Archives</a>
          <li><a href="#checkout">Checkout LLVM from CVS</a>
          <li><a href="#installcf">Install the GCC Front End</a>
          <li><a href="#config">Local LLVM Configuration</tt></a>
          <li><a href="#compile">Compiling the LLVM Suite Source Code</a>
          <li><a href="#objfiles">The Location of LLVM Object Files</tt></a>
        </ol>
      <li><a href="#layout">Program layout</a>
      <ol>
        <li><a href="#cvsdir"><tt>CVS</tt> directories</a>
        <li><a href="#include"><tt>llvm/include</tt></a>
        <li><a href="#lib"><tt>llvm/lib</tt></a>
        <li><a href="#runtime"><tt>llvm/runtime</tt></a>  
        <li><a href="#test"><tt>llvm/test</tt></a>
        <li><a href="#tools"><tt>llvm/tools</tt></a>  
        <li><a href="#utils"><tt>llvm/utils</tt></a>
    	</ol>
      <li><a href="#tutorial">An Example Using the LLVM Tool Chain</a>
      <li><a href="#problems">Common Problems</a>
      <li><a href="#links">Links</a>
    </ul>


    <!--=====================================================================-->
    <center>
    <h2><a name="overview"><b>Overview</b></a></h2>
    </center>
    <hr>
    <!--=====================================================================-->

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

    <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 also contains a test suite that can be used
    to test the LLVM tools and the GCC front end.
    <p>
    The second piece is the GCC front end.  This component provides a version
    of GCC that compiles C  and C++ code into LLVM bytecode.  Currently, the
    GCC front end is a modified version of GCC 3.4 (we track the GCC 3.4
    development).  Once compiled into LLVM bytecode, a program can be
    manipulated with the LLVM tools from the LLVM suite.

    <!--=====================================================================-->
    <h3><a name="requirements"><b>Requirements</b></a></h3>
    <!--=====================================================================-->

    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.

    <!--=====================================================================-->
    <h4><a name="hardware"><b>Hardware</b></a></h4>
    <!--=====================================================================-->
    LLVM is known to work on the following platforms:
    <ul>
        <li> Linux on x86 (Pentium and above)
        <ul>
            <li> Approximately 760 MB of Free Disk Space
            <ul>
                <li>Source code: 30 MB
                <li>Object code: 670 MB
                <li>GCC front end: 60 MB
            </ul>
        </ul>

        <p>

        <li> Solaris on SparcV9 (Ultrasparc)
        <ul>
            <li> Approximately 1.24 GB of Free Disk Space
            <ul>
                <li>Source code: 30 MB
                <li>Object code: 1000 MB
                <li>GCC front end: 210 MB
            </ul>
        </ul>
    </ul>

    LLVM <i>may</i> compile on other platforms.  The LLVM utilities should work
    on other platforms, so it should be possible to generate and produce LLVM
    bytecode on unsupported platforms (although bytecode generated on one
    platform may not work on another platform).  However, the code generators
    and Just-In-Time (JIT) compilers only generate SparcV9 or x86 machine code.
    </p>

    <!--=====================================================================-->
    <h4><a name="software"><b>Software</b></a></h4>
    <!--=====================================================================-->
    <p>

    Unpacking the distribution requires the following tools:
    <dl compact>
        <dt>
        <A href="http://www.gnu.org/software/gzip/gzip.html">GNU Zip (gzip)</A>
        <dt><A href="http://www.gnu.org/software/tar/tar.html">GNU Tar</A>
        <dd>
        These tools are needed to uncompress and unarchive the software.
        Regular Solaris <tt>tar</tt> may work for unpacking the TAR archive but
        is untested.
    </dl>

    Compiling LLVM requires that you have several different software packages
    installed:

    <dl compact>
        <dt> <A href="http://gcc.gnu.org">GCC</A>
        <dd>
        The GNU Compiler Collection must be installed with C and C++ language
        support.  GCC 3.2.x works, and GCC 3.x is generally supported.

        <p>
        Note that we currently do not support any other C++ compiler.
        </p>

        <dt> <A href="http://savannah.gnu.org/projects/make">GNU Make</A>
        <dd>
        The LLVM build system relies upon GNU Make extensions.  Therefore, you
        will need GNU Make (sometimes known as gmake) to build LLVM.
        <p>

        <dt> <A href="http://www.gnu.org/software/flex">Flex</A>
        and
        <A href="http://www.gnu.org/software/bison/bison.html">Bison</A>
        <dd>
        The LLVM source code is built using flex and bison.  You will not be
        able to configure and compile LLVM without them.
        <p>

        <dt> <A href="http://savannah.gnu.org/projects/m4">GNU M4</A>
        <dd>
        If you are installing Bison on your machine for the first time, you
        will need GNU M4 (version 1.4 or higher).
    </dl>

    <p>
    There are some additional tools that you may want to have when working with
    LLVM:
    </p>

    <ul>
        <li><A href="http://www.gnu.org/software/autoconf">GNU Autoconf</A>
        <li><A href="http://savannah.gnu.org/projects/m4">GNU M4</A>
        <p>
        If you want to make changes to the configure scripts, you will need
        GNU autoconf (2.53 or higher), and consequently, GNU M4 (version 1.4
        or higher).
        </p>

		<li><A href="http://www.codesourcery.com/qm/qmtest">QMTest</A>
		<li><A href="http://www.python.org">Python</A>
        <p>
        In order to run the tests in the LLVM test suite, you will need QMTest and
        a version of the Python interpreter that works with QMTest.
    </ul>


    <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.
    The <a href"#quickstart">next section</a> gives a short summary for those
    who are already familiar with the system and want to get started as quickly
    as possible.  A <a href="#starting">complete guide to installation</a> is
    provided in the subsequent section.

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

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

    Here's the short story for getting up and running quickly with LLVM:
    <ol>
        <li>Install the GCC front end:
        <ol>
            <li><tt>cd <i>where-you-want-the-C-front-end-to-live</i></tt>
            <li><tt>gunzip --stdout cfrontend.<i>platform</i>.tar.gz | tar -xvf
            -</tt>
        </ol>

        <p>

        <li>Get the Source Code
        <ul>
            <li>With the distributed files:
            <ol>
                <li><tt>cd <i>where-you-want-llvm-to-live</i></tt>
                <li><tt>gunzip --stdout llvm.tar.gz | tar -xvf -</tt>
                <li><tt>cd llvm</tt>
            </ol>

            <p>

            <li>With anonymous CVS access:
            <ol>
                <li>Find the path to the CVS repository containing LLVM (we'll
                call this <i>CVSROOTDIR</i>).
                <li><tt>cd <i>where-you-want-llvm-to-live</i></tt>
                <li><tt>cvs -d <i>CVSROOTDIR</i> checkout llvm</tt>
                <li><tt>cd llvm</tt>
            </ol>
        </ul>
        </ul>

        <p>

        <li>Configure the LLVM Build Environment
        <ol>
            <li>Change directory to where you want to store the LLVM object
            files and run <tt>configure</tt> to configure the Makefiles and
            header files for the default platform.
            Useful options include:
                <ul>
                    <li><tt>--with-llvmgccdir=<i>directory</i></tt>
                    <br>
                    Specify where the LLVM GCC frontend is installed.
                    <p>

                    <li><tt>--enable-spec2000=<i>directory</i></tt>
                    <br>
                    Enable the SPEC2000 benchmarks for testing.  The SPEC2000
                    benchmarks should be available in <tt><i>directory</i></tt>.
                </ul>
        </ol>

        <p>

        <li>Build the LLVM Suite
        <ol>
            <li>Set your LLVM_LIB_SEARCH_PATH environment variable.
            <li><tt>gmake -k |& tee gnumake.out
            &nbsp;&nbsp;&nbsp;# this is csh or tcsh syntax</tt>
        </ol>

        <p>

    </ol>

    <p>See <a href="#environment">Setting Up Your Environment</a> on tips to
    simplify working with the LLVM front-end and compiled tools.  See the
    next section for other useful details in working with LLVM,
    or go straight to <a href="#layout">Program Layout</a> to learn about the
    layout of the source code tree.

    <!--=====================================================================-->
    <center>
    <h2><a name="starting"><b>Getting Started with LLVM</b></a></h2>
    </center>
    <hr>
    <!--=====================================================================-->

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

    <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 compact>
        <dt>CVSROOTDIR
        <dd>
        This is the path for the CVS repository containing the LLVM source
        code.  Ask the person responsible for your local LLVM installation to
        give you this path.
        <p>

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

        <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).
        <p>

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

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

    <p>
    In order to compile and use LLVM, you will need to set some environment
    variables.  There are also some shell aliases which you may find useful.
    You can set these on the command line, or better yet, set them in your
    <tt>.cshrc</tt> or <tt>.profile</tt>.

    <dl compact>
        <dt><tt>LLVM_LIB_SEARCH_PATH</tt>=<tt><i>LLVMGCCDIR</i>/llvm-gcc/bytecode-libs</tt>
        <dd>
        This environment variable helps the LLVM GCC front end find bytecode
        libraries that it will need for compilation.
        <p>

        <dt>alias llvmgcc <i>LLVMGCCDIR</i><tt>/llvm-gcc/bin/gcc</tt>
        <dt>alias llvmg++ <i>LLVMGCCDIR</i><tt>/llvm-gcc/bin/g++</tt>
        <dd>
        This alias allows you to use the LLVM C and C++ front ends without putting
        them in your <tt>PATH</tt> or typing in their complete pathnames.
    </dl>

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

    <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 three files.  Each
    file is a TAR archive that is compressed with the gzip program.
    </p>

    <p> The three files are as follows:
    <dl compact>
        <dt>llvm.tar.gz
        <dd>This is the source code to the LLVM suite.
        <p>

        <dt>cfrontend.sparc.tar.gz
        <dd>This is the binary release of the GCC front end for Solaris/Sparc.
        <p>

        <dt>cfrontend.x86.tar.gz
        <dd>This is the binary release of the GCC front end for Linux/x86.
    </dl>

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

    <p>If you have access to our CVS repository, you can get a fresh copy of
    the entire source code.  All you need to do is check it out from CVS as
    follows:
    <ul>
    <li><tt>cd <i>where-you-want-llvm-to-live</i></tt>
    <li><tt>cvs -d <i>CVSROOTDIR</i> checkout llvm</tt></p>
    </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>
    Note that the GCC front end is not included in the CVS repository.  You
    should have downloaded the binary distribution for your platform.
    </p>

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

    <p>
    Before configuring and compiling the LLVM suite, you need to extract the
    LLVM GCC front end from the binary distribution.  It is used for building the
    bytecode libraries later used by the GCC front end for linking programs, and
    its location must be specified when the LLVM suite is configured.
    </p>

    <p>
    To install the GCC front end, do the following:
    <ol>
        <li><tt>cd <i>where-you-want-the-front-end-to-live</i></tt>
        <li><tt>gunzip --stdout cfrontend.<i>platform</i>.tar.gz | tar -xvf
        -</tt>
    </ol>

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

    <p>Once checked out from the CVS repository, the LLVM suite source code
    must be configured via the <tt>configure</tt> script.  This script sets
    variables in <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 build LLVM.

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

    <table border=1>
        <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 compact>
    <dt><i>--with-llvmgccdir=LLVMGCCDIR</i>
    <dd>
        Path to the location where the LLVM C front end binaries and
        associated libraries will be installed.
        <p>
    <dt><i>--enable-optimized</i>
    <dd>
        Enables optimized compilation by default (debugging symbols are removed
        and GCC optimization flags are enabled).  The default is to use an
        unoptimized build (also known as a debug build).
        <p>
    <dt><i>--enable-jit</i>
    <dd>
        Compile the Just In Time (JIT) 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.
        <p>
    <dt><i>--enable-spec2000</i>
    <dt><i>--enable-spec2000=&lt;<tt>directory</tt>&gt;</i>
    <dd>
        Enable the use of SPEC2000 when testing LLVM.  This is disabled by default
        (unless <tt>configure</tt> finds SPEC2000 installed).  By specifying
        <tt>directory</tt>, you can tell configure where to find the SPEC2000
        benchmarks.  If <tt>directory</tt> is left unspecified, <tt>configure</tt>
        uses the default value
        <tt>/home/vadve/shared/benchmarks/speccpu2000/benchspec</tt>.
    </dl>

    <p>
    To configure LLVM, follow these steps:
    <ol>
        <li>Change directory into the object root directory:
        <br>
        <tt>cd <i>OBJ_ROOT</i></tt>
        <p>

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

    In addition to running <tt>configure</tt>, you must set the
    <tt>LLVM_LIB_SEARCH_PATH</tt> environment variable in your startup scripts.
    This environment variable is used to locate "system" libraries like
    "<tt>-lc</tt>" and "<tt>-lm</tt>" when linking.  This variable should be set
    to the absolute path for the bytecode-libs subdirectory of the GCC front end
    install, or <i>LLVMGCCDIR</i>/llvm-gcc/bytecode-libs.  For example, one might
    set <tt>LLVM_LIB_SEARCH_PATH</tt> to
    <tt>/home/vadve/lattner/local/x86/llvm-gcc/bytecode-libs</tt> for the X86
    version of the GCC front end on our research machines.<p>

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

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

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

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

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

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

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

    <p>
    <tt>gmake -j2</tt>

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

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

        <dt><tt>gmake distclean</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.
        <p>

        <dt><tt>gmake install</tt>
        <dd>
        Installs LLVM files into the proper location.  For the most part,
        this does nothing, but it does install bytecode libraries into the
        GCC front end's bytecode library directory.  If you need to update
        your bytecode libraries, this is the target to use once you've built
        them.
        <p>

    </dl>

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

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

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

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

    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.

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

    <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>
    This is accomplished in the typical autoconf manner:
    <ul>
        <li>Change directory to where the LLVM object files should live:
        <p>
        <tt>cd <i>OBJ_ROOT</i></tt>

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

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

    <dl compact>
        <dt>Debug Builds
        <dd>
        <dl compact>
            <dt>Tools
            <dd><tt><i>OBJ_ROOT</i>/tools/Debug</tt>
            <dt>Libraries
            <dd><tt><i>OBJ_ROOT</i>/lib/Debug</tt>
        </dl>
        <p>

        <dt>Release Builds
        <dd>
        <dl compact>
            <dt>Tools
            <dd><tt><i>OBJ_ROOT</i>/tools/Release</tt>
            <dt>Libraries
            <dd><tt><i>OBJ_ROOT</i>/lib/Release</tt>
        </dl>
        <p>

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

    <!--=====================================================================-->
    <center>
    <h2><a name="layout"><b>Program Layout</b></a></h2>
    </center>
    <hr>
    <!--=====================================================================-->

    <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.cs.uiuc.edu/doxygen/">http://llvm.cs.uiuc.edu/doxygen/</a></tt>.
    The following is a brief introduction to code layout:
    </p>

    <!------------------------------------------------------------------------->
    <h3><a name="cvsdir"><tt>CVS</tt> directories</a></h3>
    <!------------------------------------------------------------------------->

    Every directory checked out of CVS will contain a <tt>CVS</tt> directory;
    for the most part these can just be ignored.


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

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

    <ol>
       <li><tt>llvm/include/llvm</tt> - 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...

       <li><tt>llvm/include/Support</tt> - This directory contains generic
       support libraries that are independent of LLVM, but are used by LLVM.
       For example, some C++ STL utilities and a Command Line option processing
       library store their header files here.

       <li><tt>llvm/include/Config</tt> - 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.
    </ol>

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

    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 compact>
      <dt><tt>llvm/lib/VMCore/</tt><dd> This directory holds the core LLVM
      source files that implement core classes like Instruction and BasicBlock.

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

      <dt><tt>llvm/lib/ByteCode/</tt><dd> This directory holds code for reading
      and write LLVM bytecode.

      <dt><tt>llvm/lib/CWriter/</tt><dd> This directory implements the LLVM to C
      converter.

      <dt><tt>llvm/lib/Analysis/</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...

      <dt><tt>llvm/lib/Transforms/</tt><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...

      <dt><tt>llvm/lib/Target/</tt><dd> This directory contains files that
      describe various target architectures for code generation.  For example,
      the llvm/lib/Target/Sparc directory holds the Sparc machine
      description.<br>
	      
      <dt><tt>llvm/lib/CodeGen/</tt><dd> This directory contains the major parts
      of the code generator: Instruction Selector, Instruction Scheduling, and
      Register Allocation.

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

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

    <p>
    This directory contains libraries which are compiled into LLVM bytecode 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>

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

    <p>This directory contains regression tests and source code that is used to
    test the LLVM infrastructure.
    </p>

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

    <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.</p>

    <dl compact>
      <dt>

      <dt><tt><b>analyze</b></tt><dd> <tt>analyze</tt> is used to run a specific
      analysis on an input LLVM bytecode file and print out the results.  It is
      primarily useful for debugging analyses, or familiarizing yourself with
      what an analysis does.<p>

      <dt><tt><b>bugpoint</b></tt><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>.<p>

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

      <dt><tt><b>llvm-dis</b></tt><dd>The disassembler transforms the LLVM
      bytecode to human readable LLVM assembly.  Additionally, it can convert
      LLVM bytecode to C, which is enabled with the <tt>-c</tt> option.<p>

      <dt><tt><b>llvm-link</b></tt><dd> <tt>llvm-link</tt>, not surprisingly,
      links multiple LLVM modules into a single program.<p>
      
      <dt><tt><b>lli</b></tt><dd> <tt>lli</tt> is the LLVM interpreter, which
      can directly execute LLVM bytecode (although very slowly...). In addition
      to a simple interpreter, <tt>lli</tt> also has a tracing mode (entered by
      specifying <tt>-trace</tt> on the command line). Finally, for
      architectures that support it (currently only x86 and Sparc), 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.<p>

      <dt><tt><b>llc</b></tt><dd> <tt>llc</tt> is the LLVM backend compiler,
      which translates LLVM bytecode to a SPARC or x86 assembly file.<p>

      <dt><tt><b>llvmgcc</b></tt><dd> <tt>llvmgcc</tt> is a GCC-based C frontend
      that has been retargeted to emit LLVM code as the machine code output.  It
      works just like any other GCC compiler, taking the typical <tt>-c, -S, -E,
      -o</tt> options that are typically used.  The source code for the
      <tt>llvmgcc</tt> tool is currently not included in the LLVM cvs tree
      because it is quite large and not very interesting.<p>

      <ol>
        <dt><tt><b>gccas</b></tt><dd> This tool is invoked by the
        <tt>llvmgcc</tt> frontend as the "assembler" part of the compiler.  This
        tool actually assembles LLVM assembly to LLVM bytecode,
        performs a variety of optimizations, and outputs LLVM bytecode.  Thus
        when you invoke <tt>llvmgcc -c x.c -o x.o</tt>, you are causing
        <tt>gccas</tt> to be run, which writes the <tt>x.o</tt> file (which is
        an LLVM bytecode file that can be disassembled or manipulated just like
        any other bytecode file).  The command line interface to <tt>gccas</tt>
        is designed to be as close as possible to the <b>system</b>
        `<tt>as</tt>' utility so that the gcc frontend itself did not have to be
        modified to interface to a "weird" assembler.<p>

        <dt><tt><b>gccld</b></tt><dd> <tt>gccld</tt> links together several LLVM
        bytecode files into one bytecode file and does some optimization.  It is
        the linker invoked by the GCC frontend when multiple .o files need to be
        linked together.  Like <tt>gccas</tt>, the command line interface of
        <tt>gccld</tt> is designed to match the system linker, to aid
        interfacing with the GCC frontend.<p>
      </ol>

      <dt><tt><b>opt</b></tt><dd> <tt>opt</tt> reads LLVM bytecode, applies a
      series of LLVM to LLVM transformations (which are specified on the command
      line), and then outputs the resultant bytecode.  The '<tt>opt --help</tt>'
      command is a good way to get a list of the program transformations
      available in LLVM.<p>

    </dl>

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

    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.

    <dl compact>
      <td><tt><b>Burg/</b></tt><dd> <tt>Burg</tt> is an instruction selector
      generator -- it builds trees on which it then performs pattern-matching to
      select instructions according to the patterns the user has specified. Burg
      is currently used in the Sparc V9 backend.<p>

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

      <dt><tt><b>cvsupdate</b></tt><dd> <tt>cvsupdate</tt> is a script that will
      update your CVS tree, but produce a much cleaner and more organized output
      than simply running <tt>`cvs up -dP'</tt> will. For example, it will group
      together all the new and updated files and modified files in separate
      sections, so you can see at a glance what has changed. If you are at the
      top of your LLVM CVS tree, running <tt>utils/cvsupdate</tt> is the
      preferred way of updating the tree.<p>

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

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

      <dt><tt><b>NightlyTest.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.cs.uiuc.edu/">LLVM homepage</a>.<p>

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

      <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.<p>
 
    </dl>

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

    <ol>
    <li>First, create a simple C file, name it 'hello.c':
       <pre>
   #include &lt;stdio.h&gt;
   int main() {
     printf("hello world\n");
     return 0;
   }
       </pre>

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

      <tt>% llvmgcc hello.c -o hello</tt><p>

      This will create two result files: <tt>hello</tt> and
      <tt>hello.bc</tt>. The <tt>hello.bc</tt> is the LLVM bytecode that
      corresponds the the compiled program and the library facilities that it
      required.  <tt>hello</tt> is a simple shell script that runs the bytecode
      file with <tt>lli</tt>, making the result directly executable.<p>

    <li>Run the program. To make sure the program ran, execute one of the
    following commands:<p>
      
      <tt>% ./hello</tt><p>
 
      or<p>

      <tt>% lli hello.bc</tt><p>

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

      <tt>% llvm-dis < hello.bc | less</tt><p>

    <li>Compile the program to native Sparc assembly using the code
    generator (assuming you are currently on a Sparc system):<p>

      <tt>% llc hello.bc -o hello.s</tt><p>

    <li>Assemble the native sparc assemble file into a program:<p>

      <tt>% /opt/SUNWspro/bin/cc -xarch=v9 hello.s -o hello.sparc</tt><p>

    <li>Execute the native sparc program:<p>

      <tt>% ./hello.sparc</tt><p>

    </ol>


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

    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.

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

    <p>This document is just an <b>introduction</b> to 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.cs.uiuc.edu/">LLVM homepage</a></li>
    <li><a href="http://llvm.cs.uiuc.edu/doxygen/">LLVM doxygen tree</a></li>
    <li><a href="http://llvm.cs.uiuc.edu/docs/Projects.html">Starting a Project that Uses LLVM</a></li>
    </ul>

    <hr>

    If you have any questions or run into any snags (or you have any
    additions...), please send an email to
    <a href="mailto:sabre@nondot.org">Chris Lattner</a>.</p>

	    <!-- Created: Mon Jul  1 02:29:02 CDT 2002 -->
	    <!-- hhmts start -->
Last modified: Mon Aug 11 13:52:22 CDT 2003
<!-- hhmts end -->
  </body>
</html>
