Factor out debugging code into the common base class.
[oota-llvm.git] / docs / GettingStarted.html
index 7c81ec074e64d331e6aca3771f26865c8a3568ee..eed4547a7818ef78de98eef2c66f921590e77727 100644 (file)
   <li><a href="#quickstart">Getting Started Quickly (A Summary)</a>
   <li><a href="#requirements">Requirements</a>
     <ol>
-      <li><a href="#hardware">Hardware</a>
-      <li><a href="#software">Software</a>
-      <li><a href="#brokengcc">Broken versions of GCC and other tools</a>
+      <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><a href="#environment">Setting Up Your Environment</a>
-      <li><a href="#unpack">Unpacking the LLVM Archives</a>
-      <li><a href="#checkout">Checkout LLVM from Subversion</a>
-      <li><a href="#installcf">Install the GCC Front End</a>
-      <li><a href="#config">Local LLVM Configuration</a>
-      <li><a href="#compile">Compiling the LLVM Suite Source Code</a>
-      <li><a href="#cross-compile">Cross-Compiling LLVM</a>
-      <li><a href="#objfiles">The Location of LLVM Object Files</a>
-      <li><a href="#optionalconfig">Optional Configuration Items</a>
+      <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><a href="#include"><tt>llvm/include</tt></a>
-      <li><a href="#lib"><tt>llvm/lib</tt></a>
-      <li><a href="#projects"><tt>llvm/projects</tt></a>
-      <li><a href="#runtime"><tt>llvm/runtime</tt></a>  
-      <li><a href="#test"><tt>llvm/test</tt></a>
-      <li><a href="#llvmtest"><tt>llvm-test</tt></a>
-      <li><a href="#tools"><tt>llvm/tools</tt></a>  
-      <li><a href="#utils"><tt>llvm/utils</tt></a>
-      <li><a href="#win32"><tt>llvm/win32</tt></a>
+      <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>
@@ -114,13 +114,13 @@ and performance.
   <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 GCC front end if you intend to compile C or C++:
+  <li>Install the llvm-gcc4.2 front end if you intend to compile C or C++:
     <ol>
       <li><tt>cd <i>where-you-want-the-C-front-end-to-live</i></tt></li>
       <li><tt>gunzip --stdout llvm-gcc.<i>platform</i>.tar.gz | tar -xvf -</tt>
       </li>
-      <li><tt>cd llvm-gcc3.4/<i>platform</i> (llvm-gcc3.4 only)<br>
-        ./fixheaders</tt></li>
+      <ul><li>If the binary extension is ".bz" use bunzip2 instead of gunzip.</li>
+      </ul>
       <li>Add llvm-gcc's "bin" directory to your PATH variable.</li>
     </ol></li>
 
@@ -236,7 +236,7 @@ software you will need.</p>
   <td>GCC</td>
 </tr>
 <tr>
-  <td>MacOS X<sup><a href="#pf_2">2</a></sup></td>
+  <td>MacOS X<sup><a href="#pf_2">2</a>,<a href="#pf_9">9</a></sup></td>
   <td>x86</td>
   <td>GCC</td>
 
@@ -320,6 +320,11 @@ project.</li>
     future. We highly recommend that you rebuild your current binutils with the
     patch from <a href="http://sourceware.org/bugzilla/show_bug.cgi?id=2659">
     Binutils bugzilla</a>, if it wasn't already applied.</li>
+<li><a name="pf_9">XCode 2.5 and gcc 4.0.1 (Apple Build 5370) will trip
+    internal LLVM assert messages when compiled for Release at optimization
+    levels greater than 0 (i.e., <i>&ldquo;-O1&rdquo;</i> and higher).
+    Add <i>OPTIMIZE_OPTION=&quot;-O0&quot;</i> to the build command line
+    if compiling for LLVM Release or bootstrapping the LLVM toolchain.</li>
 </ol>
 </div>
 
@@ -338,7 +343,7 @@ 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="CFEBuildInstrs.html">try to compile it</a> on your platform.</p>
+href="GCCFEBuildInstrs.html">try to compile it</a> on your platform.</p>
 
 </div>
 
@@ -469,7 +474,6 @@ href="CFEBuildInstrs.html">try to compile it</a> on your platform.</p>
     <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>etags</b> - C/C++ tag file creator for vim/emacs</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>
@@ -511,28 +515,33 @@ of GCC you are using.
 problems in the STL that effectively prevent it from compiling LLVM.
 </p>
 
-<p><b>GCC 3.2.2</b>: This version of GCC fails to compile 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="CFEBuildInstrs.html#cygwin">upgrade 
+   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</b> on linux/x86 (32-bit)</b>: GCC miscompiles portions of the 
+<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</b> on linux/x86 (32-bit)</b>: GCC miscompiles portions of the 
+<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</b> on X86-64/amd64</b>: GCC <a href="http://llvm.org/PR1056">
+<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
@@ -707,6 +716,9 @@ revision), you can checkout it from the '<tt>tags</tt>' directory (instead of
   subdirectories of the '<tt>tags</tt>' directory:</p>
 
 <ul>
+<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>
@@ -735,7 +747,7 @@ 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="CFEBuildInstrs.html">these 
+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>
@@ -750,7 +762,7 @@ instructions</a> to successfully get and build the LLVM GCC front-end.</p>
 <p>Before configuring and compiling the LLVM suite, you can optionally extract the 
 LLVM GCC 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="CFEBuildInstrs.html">build llvm-gcc yourself</a> after building the
+<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:</p>
@@ -775,7 +787,7 @@ 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.</p>
 
 <p>In cases like these, you may want to try <a
-href="CFEBuildInstrs.html">building the GCC front end from source.</a> This is
+href="GCCFEBuildInstrs.html">building the GCC front end from source.</a> This is
 much easier now than it was in the past.</p>
 
 </div>
@@ -830,7 +842,7 @@ script to configure the build system:</p>
   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="CFEBuildInstrs.html">Bootstrapping the LLVM C/C++ Front-End</a>
+  <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
@@ -1376,13 +1388,10 @@ information is in the <a href="CommandGuide/index.html">Command Guide</a>.</p>
   
   <dt><tt><b>lli</b></tt></dt>
   <dd><tt>lli</tt> is the LLVM interpreter, which
-  can directly execute LLVM bitcode (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 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>
+  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