<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
                      "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
  <title>LLVM: Frequently Asked Questions</title>
  <style>
    @import url("llvm.css");
    .question { font-weight: bold }
    .answer   { margin-left: 2em  }
  </style>
</head>
<body>

<div class="doc_title">
  LLVM: Frequently Asked Questions
</div>

<ol>
  <li><a href="#license">License</a>
  <ol>
  <li>Why are the LLVM source code and the front-end distributed under different
  licenses?</li>
  <li>Does the University of Illinois Open Source License really qualify as an
  "open source" license?</li>
  <li>Can I modify LLVM source code and redistribute the modified source?</li>
  <li>Can I modify LLVM source code and redistribute binaries or other tools
  based on it, without redistributing the source?</li>
  </ol></li>

  <li><a href="#source">Source code</a>
  <ol>
  <li>In what language is LLVM written?</li>
  <li>How portable is the LLVM source code?</li>
  </ol></li>

  <li><a href="#build">Build Problems</a>
  <ol>
  <li>When I run configure, it finds the wrong C compiler.</li>
  <li>I compile the code, and I get some error about <tt>/localhome</tt>.</li>
  <li>The <tt>configure</tt> script finds the right C compiler, but it uses the
  LLVM linker from a previous build.  What do I do?</li>
  <li>When creating a dynamic library, I get a strange GLIBC error.</li>
  <li>I've updated my source tree from CVS, and now my build is trying to use a
  file/directory that doesn't exist.</li>
  <li>I've modified a Makefile in my source tree, but my build tree keeps using
  the old version.  What do I do?</li>
  <li>I've upgraded to a new version of LLVM, and I get strange build
  errors.</li>
  <li>I've built LLVM and am testing it, but the tests freeze.</li>
  <li>Why do test results differ when I perform different types of builds?</li>
  <li>Compiling LLVM with GCC 3.3.2 fails, what should I do?</li>
  <li>When I use the test suite, all of the C Backend tests fail.  What is
      wrong?</li>
  </ol></li>

  <li><a href="#cfe">Using the GCC Front End</a>
  <ol>
    <li>
    When I compile software that uses a configure script, the configure script
    thinks my system has all of the header files and libraries it is testing
    for.  How do I get configure to work correctly?
    </li>

    <li>
    When I compile code using the LLVM GCC front end, it complains that it
    cannot find crtend.o.
    </li>
  </ol>
  </li>

  <li><a href="#cfe_code">Questions about code generated by the GCC front-end</a>
  <ol>
     <li>What is this <tt>__main()</tt> call that gets inserted into
         <tt>main()</tt>?</li>
     <li>Where did all of my code go??</li>
  </ol>
  </li>
</ol>

<!-- *********************************************************************** -->
<div class="doc_section">
  <a name="license">License</a>
</div>
<!-- *********************************************************************** -->

<div class="question">
<p>Why are the LLVM source code and the front-end distributed under different
licenses?</p>
</div>
	
<div class="answer">
<p>The C/C++ front-ends are based on GCC and must be distributed under the GPL.
Our aim is to distribute LLVM source code under a <em>much less restrictive</em>
license, in particular one that does not compel users who distribute tools based
on modifying the source to redistribute the modified source code as well.</p>
</div>

<div class="question">
<p>Does the University of Illinois Open Source License really qualify as an
"open source" license?</p>
</div>

<div class="answer">
<p>Yes, the license is <a
href="http://www.opensource.org/licenses/UoI-NCSA.php">certified</a> by the Open
Source Initiative (OSI).</p>
</div>

<div class="question">
<p>Can I modify LLVM source code and redistribute the modified source?</p>
</div>

<div class="answer">
<p>Yes.  The modified source distribution must retain the copyright notice and
follow the three bulletted conditions listed in the <a
href="http://llvm.cs.uiuc.edu/releases/1.2/LICENSE.TXT">LLVM license</a>.</p>
</div>

<div class="question">
<p>Can I modify LLVM source code and redistribute binaries or other tools based
on it, without redistributing the source?</p>
</div>

<div class="answer">
<p>Yes, this is why we distribute LLVM under a less restrictive license than
GPL, as explained in the first question above.</p>
</div>

<!-- *********************************************************************** -->
<div class="doc_section">
  <a name="source">Source Code</a>
</div>
<!-- *********************************************************************** -->

<div class="question">
<p>In what language is LLVM written?</p>
</div>

<div class="answer">
<p>All of the LLVM tools and libraries are written in C++ with extensive use of
the STL.</p>
</div>

<div class="question">
<p>How portable is the LLVM source code?</p>
</div>

<div class="answer">
<p>The LLVM source code should be portable to most modern UNIX-like operating
systems.  Most of the code is written in standard C++ with operating system
services abstracted to a support library.  The tools required to build and test
LLVM have been ported to a plethora of platforms.</p>

<p>Some porting problems may exist in the following areas:</p>

<ul>

  <li>The GCC front end code is not as portable as the LLVM suite, so it may not
  compile as well on unsupported platforms.</li>

  <li>The Python test classes are more UNIX-centric than they should be, so
  porting to non-UNIX like platforms (i.e. Windows, MacOS 9) will require some
  effort.</li>

  <li>The LLVM build system relies heavily on UNIX shell tools, like the Bourne
  Shell and sed.  Porting to systems without these tools (MacOS 9, Plan 9) will
  require more effort.</li>

</ul>

</div>

<!-- *********************************************************************** -->
<div class="doc_section">
  <a name="build">Build Problems</a>
</div>
<!-- *********************************************************************** -->

<div class="question">
<p>When I run configure, it finds the wrong C compiler.</p>
</div>

<div class="answer">

<p>The <tt>configure</tt> script attempts to locate first <tt>gcc</tt> and then
<tt>cc</tt>, unless it finds compiler paths set in <tt>CC</tt> and <tt>CXX</tt>
for the C and C++ compiler, respectively.</p>

<p>If <tt>configure</tt> finds the wrong compiler, either adjust your
<tt>PATH</tt> environment variable or set <tt>CC</tt> and <tt>CXX</tt>
explicitly.</p>

</div>

<div class="question">
<p>I compile the code, and I get some error about <tt>/localhome</tt>.</p>
</div>

<div class="answer">

<p>There are several possible causes for this.  The first is that you didn't set
a pathname properly when using <tt>configure</tt>, and it defaulted to a
pathname that we use on our research machines.</p>

<p>Another possibility is that we hardcoded a path in our Makefiles.  If you see
this, please email the LLVM bug mailing list with the name of the offending
Makefile and a description of what is wrong with it.</p>

</div>

<div class="question">
<p>The <tt>configure</tt> script finds the right C compiler, but it uses the
LLVM linker from a previous build.  What do I do?</p>
</div>

<div class="answer">
<p>The <tt>configure</tt> script uses the <tt>PATH</tt> to find executables, so
if it's grabbing the wrong linker/assembler/etc, there are two ways to fix
it:</p>

<ol>
		
  <li><p>Adjust your <tt>PATH</tt> environment variable so that the correct
  program appears first in the <tt>PATH</tt>.  This may work, but may not be
  convenient when you want them <i>first</i> in your path for other
  work.</p></li>

  <li><p>Run <tt>configure</tt> with an alternative <tt>PATH</tt> that is
  correct. In a Borne compatible shell, the syntax would be:</p>
		
      <p><tt>PATH=<the path without the bad program> ./configure ...</tt></p>

      <p>This is still somewhat inconvenient, but it allows <tt>configure</tt>
      to do its work without having to adjust your <tt>PATH</tt>
      permanently.</p></li>
	
</ol>

</div>

<div class="question">
<p>When creating a dynamic library, I get a strange GLIBC error.</p>
</div>

<div class="answer">
<p>Under some operating systems (i.e. Linux), libtool does not work correctly if
GCC was compiled with the --disable-shared option.  To work around this, install
your own version of GCC that has shared libraries enabled by default.</p>
</div>

<div class="question">
<p>I've updated my source tree from CVS, and now my build is trying to use a
file/directory that doesn't exist.</p>
</div>

<div class="answer">
<p>You need to re-run configure in your object directory.  When new Makefiles
are added to the source tree, they have to be copied over to the object tree in
order to be used by the build.</p>
</div>

<div class="question">
<p>I've modified a Makefile in my source tree, but my build tree keeps using the
old version.  What do I do?</p>
</div>

<div class="answer">

<p>If the Makefile already exists in your object tree, you
can just run the following command in the top level directory of your object
tree:</p>

<p><tt>./config.status &lt;relative path to Makefile&gt;</tt><p>

<p>If the Makefile is new, you will have to modify the configure script to copy
it over.</p>

</div>

<div class="question">
<p>I've upgraded to a new version of LLVM, and I get strange build errors.</p>
</div>

<div class="answer">

<p>Sometimes, changes to the LLVM source code alters how the build system works.
Changes in libtool, autoconf, or header file dependencies are especially prone
to this sort of problem.</p>

<p>The best thing to try is to remove the old files and re-build.  In most
cases, this takes care of the problem.  To do this, just type <tt>make
clean</tt> and then <tt>make</tt> in the directory that fails to build.</p>

</div>

<div class="question">
<p>I've built LLVM and am testing it, but the tests freeze.</p>
</div>

<div class="answer">

<p>This is most likely occurring because you built a profile or release
(optimized) build of LLVM and have not specified the same information on the
<tt>gmake</tt> command line.</p>

<p>For example, if you built LLVM with the command:</p>

<p><tt>gmake ENABLE_PROFILING=1</tt>

<p>...then you must run the tests with the following commands:</p>

<p><tt>cd llvm/test<br>gmake  ENABLE_PROFILING=1</tt></p>

</div>

<div class="question">
<p>Why do test results differ when I perform different types of builds?</p>
</div>

<div class="answer">

<p>The LLVM test suite is dependent upon several features of the LLVM tools and
libraries.</p>

<p>First, the debugging assertions in code are not enabled in optimized or
profiling builds.  Hence, tests that used to fail may pass.</p>
	
<p>Second, some tests may rely upon debugging options or behavior that is only
available in the debug build.  These tests will fail in an optimized or profile
build.</p>

</div>

<div class="question">
<p>Compiling LLVM with GCC 3.3.2 fails, what should I do?</p>
</div>

<div class="answer">
<p>This is <a href="http://gcc.gnu.org/PR?13392">a bug in GCC</a>, and 
   affects projects other than LLVM.  Try upgrading or downgrading your GCC.</p>
</div>

<div class="question">
<p>
When I use the test suite, all of the C Backend tests fail.  What is
wrong?
</p>
</div>

<div class="answer">
<p>
If you build LLVM and the C Backend tests fail in <tt>llvm/test/Programs</tt>,
then chances are good that the directory pointed to by the LLVM_LIB_SEARCH_PATH
environment variable does not contain the libcrtend.a library.
</p>

<p>
To fix it, verify that LLVM_LIB_SEARCH_PATH points to the correct directory
and that libcrtend.a is inside.  For pre-built LLVM GCC front ends, this
should be the absolute path to
<tt>cfrontend/&lt;<i>platform</i>&gt;/llvm-gcc/bytecode-libs</tt>.  If you've
built your own LLVM GCC front end, then ensure that you've built and installed
the libraries in <tt>llvm/runtime</tt> and have LLVM_LIB_SEARCH_PATH pointing
to the <tt>LLVMGCCDIR/bytecode-libs</tt> subdirectory.
</p>
</div>

<!-- *********************************************************************** -->
<div class="doc_section">
  <a name="cfe">Using the GCC Front End</a>
</div>

<div class="question">
<p>
When I compile software that uses a configure script, the configure script
thinks my system has all of the header files and libraries it is testing for.
How do I get configure to work correctly?
</p>
</div>

<div class="answer">
<p>
The configure script is getting things wrong because the LLVM linker allows
symbols to be undefined at link time (so that they can be resolved during JIT
or translation to the C back end).  That is why configure thinks your system
"has everything."
</p>
<p>
To work around this, perform the following steps:
</p>

<ol>
  <li>
  Make sure the CC and CXX environment variables contains the full path to the
  LLVM GCC front end.
  </li>

  <li>
  Make sure that the regular C compiler is first in your PATH.
  </li>

  <li>
  Add the string "-Wl,-native" to your CFLAGS environment variable.
  </li>
</ol>

<p>
This will allow the gccld linker to create a native code executable instead of
a shell script that runs the JIT.  Creating native code requires standard
linkage, which in turn will allow the configure script to find out if code is
not linking on your system because the feature isn't available on your system.
</p>
</div>

<div class="question">
<p>
When I compile code using the LLVM GCC front end, it complains that it cannot
find libcrtend.a.
</p>
</div>

<div class="answer">
<p>
In order to find libcrtend.a, you must have the directory in which it lives in
your LLVM_LIB_SEARCH_PATH environment variable.  For the binary distribution of
the LLVM GCC front end, this will be the full path of the bytecode-libs
directory inside of the LLVM GCC distribution.
</p>
</div>


<!-- *********************************************************************** -->
<div class="doc_section">
  <a name="cfe_code">Questions about code generated by the GCC front-end</a>
</div>

<div class="question"><p>
What is this <tt>__main()</tt> call that gets inserted into <tt>main()</tt>?
</p></div>

<div class="answer">
<p>
The <tt>__main</tt> call is inserted by the C/C++ compiler in order to guarantee
that static constructors and destructors are called when the program starts up
and shuts down.  In C, you can create static constructors and destructors by
using GCC extensions, and in C++ you can do so by creating a global variable
whose class has a ctor or dtor.
</p>

<p>
The actual implementation of <tt>__main</tt> lives in the
<tt>llvm/runtime/GCCLibraries/crtend/</tt> directory in the source-base, and is
linked in automatically when you link the program.
</p>
</div>

<!--=========================================================================-->

<div class="question"><p>
Where did all of my code go??
</p></div>

<div class="answer">
<p>
If you are using the LLVM demo page, you may often wonder what happened to all
of the code that you typed in.  Remember that the demo script is running the
code through the LLVM optimizers, so if your code doesn't actually do anything
useful, it might all be deleted.
</p>

<p>
To prevent this, make sure that the code is actually needed.  For example, if
you are computing some expression, return the value from the function instead of
leaving it in a local variable.  If you really want to constrain the optimizer,
you can read from and assign to <tt>volatile</tt> global variables.
</p>
</div>

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

<hr>
<div class="doc_footer">
  <a href="http://llvm.cs.uiuc.edu">The LLVM Compiler Infrastructure</a>
  <br>
  Last modified: $Date$
</div>

</body>
</html>
