<!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 type="text/css">
    @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>
  <li>After CVS update, rebuilding gives the error "No rule to make
  target".</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 libcrtend.a.
    </li>

    <li>
    How can I disable all optimizations when compiling code using the LLVM GCC front end?
    </li>

  </ol>
  </li>

  <li><a href="#cfe_code">Questions about code generated by the GCC front-end</a>
  <ol>
     <li><a href="#__main">What is this <tt>__main()</tt> call that gets inserted into
         <tt>main()</tt>?</a></li>
     <li><a href="#iosinit">What is this <tt>llvm.global_ctors</tt> and
          <tt>_GLOBAL__I__tmp_webcompile...</tt> stuff that happens when I
          #include &lt;iostream&gt;?</a></li>
     <li><a href="#codedce">Where did all of my code go??</a></li>
     <li><a href="#undef">What is this "<tt>undef</tt>" thing that shows up in my code?</a></li>
  </ol>
  </li>
</ol>

<div class="doc_author">
  <p>Written by <a href="http://llvm.cs.uiuc.edu">The LLVM Team</a></p>
</div>


<!-- *********************************************************************** -->
<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.3/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 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>After CVS update, rebuilding gives the error "No rule to make target".</p>
</div>

<div class="answer">
<p>If the error is of the form:</p>

<div class="doc_code">
<tt>
gmake[2]: *** No rule to make target `/path/to/somefile', needed by
`/path/to/another/file.d'.<br>
Stop.
</tt>
</div>

<p>This may occur anytime files are moved within the CVS repository or removed
entirely.  In this case, the best solution is to erase all <tt>.d</tt> files,
which list dependencies for source files, and rebuild:</p>

<div class="doc_code">
<pre>
% cd $LLVM_OBJ_DIR
% rm -f `find . -name \*\.d` 
% gmake 
</pre>
</div>

<p>In other cases, it may be necessary to run <tt>make clean</tt> before
rebuilding.</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>
The only way this can happen is if you haven't installed the runtime library. To
correct this, do:</p>
<pre>
  % cd llvm/runtime
  % make clean ; make install-bytecode
</pre>
</div>

<div class="question">
<p>
How can I disable all optimizations when compiling code using the LLVM GCC front end?
</p>
</div>

<div class="answer">
<p>
Passing "-Wa,-disable-opt -Wl,-disable-opt" will disable *all* cleanup and
optimizations done at the llvm level, leaving you with the truly horrible
code that you desire.
</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>
<a name="__main"></a>
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">
<a name="iosinit"></a>
<p> What is this <tt>llvm.global_ctors</tt> and
<tt>_GLOBAL__I__tmp_webcompile...</tt> stuff that happens when I #include
&lt;iostream&gt;?</p>
</div>

<div class="answer">

<p>If you #include the &lt;iostream&gt; header into a C++ translation unit, the
file will probably use the <tt>std::cin</tt>/<tt>std::cout</tt>/... global
objects.  However, C++ does not guarantee an order of initialization between
static objects in different translation units, so if a static ctor/dtor in your
.cpp file used <tt>std::cout</tt>, for example, the object would not necessarily
be automatically initialized before your use.</p>

<p>To make <tt>std::cout</tt> and friends work correctly in these scenarios, the
STL that we use declares a static object that gets created in every translation
unit that includes <tt>&lt;iostream&gt;</tt>.  This object has a static
constructor and destructor that initializes and destroys the global iostream
objects before they could possibly be used in the file.  The code that you see
in the .ll file corresponds to the constructor and destructor registration code.
</p>

<p>If you would like to make it easier to <b>understand</b> the LLVM code
generated by the compiler in the demo page, consider using <tt>printf()</tt>
instead of <tt>iostream</tt>s to print values.</p>

</div>

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

<div class="question"><p>
<a name="codedce"></a>
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>

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

<div class="question"><p>
<a name="undef"></a>
<p>What is this "<tt>undef</tt>" thing that shows up in my code?
</p></div>

<div class="answer">
<p>
<a href="LangRef.html#undef"><tt>undef</tt></a> is the LLVM way of representing
a value that is not defined.  You can get these if you do not initialize a 
variable before you use it.  For example, the C function:</p>

<div class="doc_code">
  <tt>int X() { int i; return i; }</tt>
</div>

<p>Is compiled to "<tt>ret int undef</tt>" because "i" never has a value 
specified for it.
</p>
</div>

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

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

  <a href="http://llvm.cs.uiuc.edu">LLVM Compiler Infrastructure</a><br>
  Last modified: $Date$
</address>

</body>
</html>
