Adding 1.9 release and removing references to cfrontend
[oota-llvm.git] / docs / GettingStarted.html
1 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
2                       "http://www.w3.org/TR/html4/strict.dtd">
3 <html>
4 <head>
5   <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
6   <title>Getting Started with LLVM System</title>
7   <link rel="stylesheet" href="llvm.css" type="text/css">
8 </head>
9 <body>
10
11 <div class="doc_title">
12   Getting Started with the LLVM System  
13 </div>
14
15 <ul>
16   <li><a href="#overview">Overview</a>
17   <li><a href="#quickstart">Getting Started Quickly (A Summary)</a>
18   <li><a href="#requirements">Requirements</a>
19     <ol>
20       <li><a href="#hardware">Hardware</a>
21       <li><a href="#software">Software</a>
22       <li><a href="#brokengcc">Broken versions of GCC</a>
23     </ol></li>
24
25   <li><a href="#starting">Getting Started with LLVM</a>
26     <ol>
27       <li><a href="#terminology">Terminology and Notation</a>
28       <li><a href="#environment">Setting Up Your Environment</a>
29       <li><a href="#unpack">Unpacking the LLVM Archives</a>
30       <li><a href="#checkout">Checkout LLVM from CVS</a>
31       <li><a href="#installcf">Install the GCC Front End</a>
32       <li><a href="#config">Local LLVM Configuration</a>
33       <li><a href="#compile">Compiling the LLVM Suite Source Code</a>
34       <li><a href="#cross-compile">Cross-Compiling LLVM</a>
35       <li><a href="#objfiles">The Location of LLVM Object Files</a>
36       <li><a href="#optionalconfig">Optional Configuration Items</a>
37     </ol></li>
38
39   <li><a href="#layout">Program layout</a>
40     <ol>
41       <li><a href="#cvsdir"><tt>CVS</tt> directories</a>
42       <li><a href="#examples"><tt>llvm/examples</tt></a>
43       <li><a href="#include"><tt>llvm/include</tt></a>
44       <li><a href="#lib"><tt>llvm/lib</tt></a>
45       <li><a href="#projects"><tt>llvm/projects</tt></a>
46       <li><a href="#runtime"><tt>llvm/runtime</tt></a>  
47       <li><a href="#test"><tt>llvm/test</tt></a>
48       <li><a href="#llvmtest"><tt>llvm-test</tt></a>
49       <li><a href="#tools"><tt>llvm/tools</tt></a>  
50       <li><a href="#utils"><tt>llvm/utils</tt></a>
51       <li><a href="#win32"><tt>llvm/win32</tt></a>
52     </ol></li>
53
54   <li><a href="#tutorial">An Example Using the LLVM Tool Chain</a>
55       <ol>
56          <li><a href="#tutorial4">Example with llvm-gcc4</a></li>
57          <li><a href="#tutorial3">Example with llvm-gcc3</a></li>
58       </ol>
59   <li><a href="#problems">Common Problems</a>
60   <li><a href="#links">Links</a>
61 </ul>
62
63 <div class="doc_author">
64   <p>Written by: 
65     <a href="mailto:criswell@uiuc.edu">John Criswell</a>, 
66     <a href="mailto:sabre@nondot.org">Chris Lattner</a>,
67     <a href="http://misha.brukman.net">Misha Brukman</a>, 
68     <a href="http://www.cs.uiuc.edu/~vadve">Vikram Adve</a>, and
69     <a href="mailto:gshi1@uiuc.edu">Guochun Shi</a>.
70   </p>
71 </div>
72
73
74 <!-- *********************************************************************** -->
75 <div class="doc_section">
76   <a name="overview"><b>Overview</b></a>
77 </div>
78 <!-- *********************************************************************** -->
79
80 <div class="doc_text">
81
82 <p>Welcome to LLVM! In order to get started, you first need to know some
83 basic information.</p>
84
85 <p>First, LLVM comes in two pieces. The first piece is the LLVM suite. This
86 contains all of the tools, libraries, and header files needed to use the low
87 level virtual machine.  It contains an assembler, disassembler, bytecode
88 analyzer and bytecode optimizer.  It also contains a test suite that can be
89 used to test the LLVM tools and the GCC front end.</p>
90
91 <p>The second piece is the GCC front end.  This component provides a version of
92 GCC that compiles C and C++ code into LLVM bytecode.  Currently, the GCC front
93 end is a modified version of GCC 3.4 (we track the GCC 3.4 development).  Once
94 compiled into LLVM bytecode, a program can be manipulated with the LLVM tools
95 from the LLVM suite.</p>
96
97 <p>
98 There is a third, optional piece called llvm-test.  It is a suite of programs
99 with a testing harness that can be used to further test LLVM's functionality
100 and performance.
101 </p>
102
103 </div>
104
105 <!-- *********************************************************************** -->
106 <div class="doc_section">
107   <a name="quickstart"><b>Getting Started Quickly (A Summary)</b></a>
108 </div>
109 <!-- *********************************************************************** -->
110
111 <div class="doc_text">
112
113 <p>Here's the short story for getting up and running quickly with LLVM:</p>
114
115 <ol>
116   <li>Read the documentation.</li>
117   <li>Read the documentation.</li>
118   <li>Remember that you were warned twice about reading the documentation.</li>
119   <li>Install the GCC front end if you intend to compile C or C++:
120     <ol>
121       <li><tt>cd <i>where-you-want-the-C-front-end-to-live</i></tt></li>
122       <li><tt>gunzip --stdout llvm-gcc.<i>platform</i>.tar.gz | tar -xvf -</tt>
123       </li>
124       <li><tt>cd llvm-gcc3.4/<i>platform</i> (llvm-gcc3.4 only)<br>
125         ./fixheaders</tt></li>
126       <li>Add llvm-gcc's "bin" directory to your PATH variable.</li>
127     </ol></li>
128
129   <li>Get the LLVM Source Code
130   <ul>
131     <li>With the distributed files (or use <a href="#checkout">CVS</a>):
132     <ol>
133       <li><tt>cd <i>where-you-want-llvm-to-live</i></tt>
134       <li><tt>gunzip --stdout llvm-<i>version</i>.tar.gz | tar -xvf -</tt>
135     </ol></li>
136
137   </ul></li>
138
139   <li><b>[Optional]</b> Get the Test Suite Source Code 
140   <ul>
141     <li>With the distributed files (or use <a href="#checkout">CVS</a>):
142     <ol>
143       <li><tt>cd <i>where-you-want-llvm-to-live</i></tt>
144       <li><tt>cd llvm/projects</tt>
145       <li><tt>gunzip --stdout llvm-test-<i>version</i>.tar.gz | tar -xvf -</tt>
146     </ol></li>
147
148   </ul></li>
149
150
151   <li>Configure the LLVM Build Environment
152   <ol>
153     <li><tt>cd <i>where-you-want-to-build-llvm</i></tt></li>
154     <li><tt><i>/path/to/llvm/</i>configure [options]</tt><br>
155     Some common options:
156
157       <ul>
158         <li><tt>--prefix=<i>directory</i></tt>
159         <p>Specify for <i>directory</i> the full pathname of where you
160         want the LLVM tools and libraries to be installed (default
161         <tt>/usr/local</tt>).</p></li>
162         <li><tt>--with-llvmgccdir=<i>directory</i></tt>
163         <p>Optionally, specify for <i>directory</i> the full pathname of the 
164         C/C++ front end installation to use with this LLVM configuration. If
165         not specified, the PATH will be searched.</p></li>
166         <li><tt>--enable-spec2000=<i>directory</i></tt>
167             <p>Enable the SPEC2000 benchmarks for testing.  The SPEC2000
168             benchmarks should be available in
169             <tt><i>directory</i></tt>.</p></li>
170       </ul>
171   </ol></li>
172
173   <li>Build the LLVM Suite:
174   <ol>
175       <li><tt>gmake -k |&amp; tee gnumake.out
176       &nbsp;&nbsp;&nbsp;# this is csh or tcsh syntax</tt></li>
177       <li>If you get an "internal compiler error (ICE)" see <a href="#brokengcc">below</a>.</li>
178   </ol>
179
180 </ol>
181
182 <p>Consult the <a href="#starting">Getting Started with LLVM</a> section for
183 detailed information on configuring and compiling LLVM.  See <a
184 href="#environment">Setting Up Your Environment</a> for tips that simplify
185 working with the GCC front end and LLVM tools.  Go to <a href="#layout">Program
186 Layout</a> to learn about the layout of the source code tree.</p>
187
188 </div>
189
190 <!-- *********************************************************************** -->
191 <div class="doc_section">
192   <a name="requirements"><b>Requirements</b></a>
193 </div>
194 <!-- *********************************************************************** -->
195
196 <div class="doc_text">
197
198 <p>Before you begin to use the LLVM system, review the requirements given below.
199 This may save you some trouble by knowing ahead of time what hardware and
200 software you will need.</p>
201
202 </div>
203
204 <!-- ======================================================================= -->
205 <div class="doc_subsection">
206   <a name="hardware"><b>Hardware</b></a>
207 </div>
208
209 <div class="doc_text">
210
211 <p>LLVM is known to work on the following platforms:</p>
212
213 <table cellpadding="3" summary="Known LLVM platforms">
214 <tr>
215   <th>OS</th>
216   <th>Arch</th>
217   <th>Compilers</th>
218 </tr>
219 <tr>
220   <td>Linux</td>
221   <td>x86<sup><a href="#pf_1">1</a></sup></td>
222   <td>GCC</td>
223 </tr>
224 <tr>
225   <td>Solaris</td>
226   <td>V9 (Ultrasparc)</td>
227   <td>GCC</td>
228 </tr>
229 <tr>
230   <td>FreeBSD</td>
231   <td>x86<sup><a href="#pf_1">1</a></sup></td>
232   <td>GCC</td>
233 </tr>
234 <tr>
235   <td>MacOS X<sup><a href="#pf_2">2</a></sup></td>
236   <td>PowerPC</td>
237   <td>GCC</td>
238 </tr>
239 <tr>
240   <td>MacOS X<sup><a href="#pf_2">2</a></sup></td>
241   <td>x86</td>
242   <td>GCC</td>
243
244 </tr>
245 <tr>
246   <td>Cygwin/Win32</td>
247   <td>x86<sup><a href="#pf_1">1</a>,<a href="#pf_8">8</a></sup></td>
248   <td>GCC 3.4.X, binutils 2.15</td>
249 </tr>
250 <tr>
251   <td>MinGW/Win32</td>
252   <td>x86<sup><a href="#pf_1">1</a>,<a href="#pf_6">6</a>,<a href="#pf_8">8</a></sup></td>
253   <td>GCC 3.4.X, binutils 2.15</td>
254 </tr>
255 <tr>
256   <td>Linux</td>
257   <td>amd64<sup><a href="#pf_3">3</a></sup></td>
258   <td>GCC</td>
259 </tr>
260 </table>
261
262 <p>LLVM has partial support for the following platforms:</p>
263
264 <table summary="LLVM partial platform support">
265 <tr>
266   <th>OS</th>
267   <th>Arch</th>
268   <th>Compilers</th>
269 </tr>
270 <tr>
271   <td>Windows</td>
272   <td>x86<sup><a href="#pf_1">1</a></sup></td>
273   <td>Visual Studio .NET<sup><a href="#pf_4">4</a>,<a href="#pf_5">5</a></sup></td>
274 <tr>
275   <td>AIX<sup><a href="#pf_3">3</a>,<a href="#pf_4">4</a></sup></td>
276   <td>PowerPC</td>
277   <td>GCC</td>
278 </tr>
279 <tr>
280   <td>Linux<sup><a href="#pf_3">3</a>,<a href="#pf_5">5</a></sup></td>
281   <td>PowerPC</td>
282   <td>GCC</td>
283 </tr>
284
285 <tr>
286   <td>Linux<sup><a href="#pf_7">7</a></sup></td>
287   <td>Alpha</td>
288   <td>GCC</td>
289 </tr>
290 <tr>
291   <td>Linux<sup><a href="#pf_7">7</a></sup></td>
292   <td>Itanium (IA-64)</td>
293   <td>GCC</td>
294 </tr>
295 <tr>
296   <td>HP-UX<sup><a href="#pf_7">7</a></sup></td>
297   <td>Itanium (IA-64)</td>
298   <td>HP aCC</td>
299 </tr>
300 </table>
301
302 <p><b>Notes:</b></p>
303
304 <div class="doc_notes">
305 <ol>
306 <li><a name="pf_1">Code generation supported for Pentium processors and
307 up</a></li>
308 <li><a name="pf_2">Code generation supported for 32-bit ABI only</a></li>
309 <li><a name="pf_3">No native code generation</a></li>
310 <li><a name="pf_4">Build is not complete: one or more tools don't link</a></li>
311 <li><a name="pf_5">The GCC-based C/C++ frontend does not build</a></li>
312 <li><a name="pf_6">The port is done using the MSYS shell.</a>
313 <a href="http://www.mingw.org/MinGWiki/">Download</a> and install 
314 bison (excl. M4.exe) and flex in that order. Build binutils-2.15 from source,
315 if necessary. Bison &amp; flex can be also grabbed from GNUWin32 sf.net 
316 project.</li>
317 <li><a name="pf_7">Native code generation exists but is not complete.</a></li>
318 <li><a name="pf_8">Binutils</a> up to post-2.17 has bug in bfd/cofflink.c
319     preventing LLVM from building correctly. Several workarounds have been
320     introduced into LLVM build system, but the bug can occur anytime in the
321     future. We highly recommend that you rebuild your current binutils with the
322     patch from <a href="http://sourceware.org/bugzilla/show_bug.cgi?id=2659">
323     Binutils bugzilla</a>, if it wasn't already applied.</li>
324 </ol>
325 </div>
326
327 <p>Note that you will need about 1-3 GB of space for a full LLVM build in Debug
328 mode, depending on the system (it is so large because of all the debugging
329 information and the fact that the libraries are statically linked into multiple
330 tools).  If you do not need many of the tools and you are space-conscious,
331 you can disable them individually in <tt>llvm/tools/Makefile</tt>.  The Release
332 build requires considerably less space.</p>
333
334 <p>The LLVM suite <i>may</i> compile on other platforms, but it is not
335 guaranteed to do so.  If compilation is successful, the LLVM utilities should be
336 able to assemble, disassemble, analyze, and optimize LLVM bytecode.  Code
337 generation should work as well, although the generated native code may not work
338 on your platform.</p>
339
340 <p>The GCC front end is not very portable at the moment.  If you want to get it
341 to work on another platform, you can download a copy of the source and <a
342 href="CFEBuildInstrs.html">try to compile it</a> on your platform.</p>
343
344 </div>
345
346 <!-- ======================================================================= -->
347 <div class="doc_subsection"><a name="software"><b>Software</b></a></div>
348 <div class="doc_text">
349   <p>Compiling LLVM requires that you have several software packages 
350   installed. The table below lists those required packages. The Package column
351   is the usual name for the software package that LLVM depends on. The Version
352   column provides "known to work" versions of the package. The Notes column
353   describes how LLVM uses the package and provides other details.</p>
354   <table summary="Packages required to compile LLVM">
355     <tr><th>Package</th><th>Version</th><th>Notes</th></tr>
356
357     <tr>
358       <td><a href="http://savannah.gnu.org/projects/make">GNU Make</a></td>
359       <td>3.79, 3.79.1</td>
360       <td>Makefile/build processor</td>
361     </tr>
362
363     <tr>
364       <td><a href="http://gcc.gnu.org">GCC</a></td>
365       <td>3.4.2</td>
366       <td>C/C++ compiler<sup><a href="#sf1">1</a></sup></td>
367     </tr>
368
369     <tr>
370       <td><a href="http://www.gnu.org/software/texinfo">TeXinfo</a></td>
371       <td>4.5</td>
372       <td>For building the CFE</td>
373     </tr>
374
375     <tr>
376       <td><a href="http://www.gnu.org/software/flex">Flex</a></td>
377       <td>2.5.4</td>
378       <td>LEX compiler</td>
379     </tr>
380
381     <tr>
382       <td><a href="http://www.gnu.org/software/bison/bison.html">Bison</a></td>
383       <td>1.28, 1.35, 1.75, 1.875d, 2.0, or 2.1<br>(not 1.85 or 1.875)</td>
384       <td>YACC compiler</td>
385     </tr>
386
387     <tr>
388       <td><a href="https://www.cvshome.org/downloads.html">CVS</a></td>
389       <td>&ge;1.11</td>
390       <td>CVS access to LLVM<sup><a href="#sf2">2</a></sup></td>
391     </tr>
392
393     <tr>
394       <td><a href="http://savannah.gnu.org/projects/dejagnu">DejaGnu</a></td>
395       <td>1.4.2</td>
396       <td>Automated test suite<sup><a href="#sf3">3</a></sup></td>
397     </tr>
398
399     <tr>
400       <td><a href="http://www.tcl.tk/software/tcltk/">tcl</a></td>
401       <td>8.3, 8.4</td>
402       <td>Automated test suite<sup><a href="#sf3">3</a></sup></td>
403     </tr>
404
405     <tr>
406       <td><a href="http://expect.nist.gov/">expect</a></td>
407       <td>5.38.0</td>
408       <td>Automated test suite<sup><a href="#sf3">3</a></sup></td>
409     </tr>
410
411     <tr>
412       <td><a href="http://www.perl.com/download.csp">perl</a></td>
413       <td>&ge;5.6.0</td>
414       <td>Nightly tester, utilities</td>
415     </tr>
416
417     <tr>
418       <td><a href="http://savannah.gnu.org/projects/m4">GNU M4</a>
419       <td>1.4</td>
420       <td>Macro processor for configuration<sup><a href="#sf4">4</a></sup></td>
421     </tr>
422
423     <tr>
424       <td><a href="http://www.gnu.org/software/autoconf">GNU Autoconf</a></td>
425       <td>2.59</td>
426       <td>Configuration script builder<sup><a href="#sf4">4</a></sup></td>
427     </tr>
428
429     <tr>
430       <td><a href="http://www.gnu.org/software/automake">GNU Automake</a></td>
431       <td>1.9.2</td>
432       <td>aclocal macro generator<sup><a href="#sf4">4</a></sup></td>
433     </tr>
434
435     <tr>
436       <td><a href="http://savannah.gnu.org/projects/libtool">libtool</a></td>
437       <td>1.5.10</td>
438       <td>Shared library manager<sup><a href="#sf4">4</a></sup></td>
439     </tr>
440
441   </table>
442
443   <p><b>Notes:</b></p>
444   <div class="doc_notes">
445   <ol>
446     <li><a name="sf1">Only the C and C++ languages are needed so there's no
447       need to build the other languages for LLVM's purposes.</a> See 
448       <a href="#brokengcc">below</a> for specific version info.</li>
449     <li><a name="sf2">You only need CVS if you intend to build from the 
450       latest LLVM sources. If you're working from a release distribution, you
451       don't need CVS.</a></li>
452     <li><a name="sf3">Only needed if you want to run the automated test 
453       suite in the <tt>llvm/test</tt> directory.</a></li>
454     <li><a name="sf4">If you want to make changes to the configure scripts, 
455       you will need GNU autoconf (2.59), and consequently, GNU M4 (version 1.4 
456       or higher). You will also need automake (1.9.2). We only use aclocal 
457       from that package.</a></li>
458   </ol>
459   </div>
460   
461   <p>Additionally, your compilation host is expected to have the usual 
462   plethora of Unix utilities. Specifically:</p>
463   <ul>
464     <li><b>ar</b> - archive library builder</li>
465     <li><b>bzip2*</b> - bzip2 command for distribution generation</li>
466     <li><b>bunzip2*</b> - bunzip2 command for distribution checking</li>
467     <li><b>chmod</b> - change permissions on a file</li>
468     <li><b>cat</b> - output concatenation utility</li>
469     <li><b>cp</b> - copy files</li>
470     <li><b>date</b> - print the current date/time </li>
471     <li><b>echo</b> - print to standard output</li>
472     <li><b>egrep</b> - extended regular expression search utility</li>
473     <li><b>etags</b> - C/C++ tag file creator for vim/emacs</li>
474     <li><b>find</b> - find files/dirs in a file system</li>
475     <li><b>grep</b> - regular expression search utility</li>
476     <li><b>gzip*</b> - gzip command for distribution generation</li>
477     <li><b>gunzip*</b> - gunzip command for distribution checking</li>
478     <li><b>install</b> - install directories/files </li>
479     <li><b>mkdir</b> - create a directory</li>
480     <li><b>mv</b> - move (rename) files</li>
481     <li><b>ranlib</b> - symbol table builder for archive libraries</li>
482     <li><b>rm</b> - remove (delete) files and directories</li>
483     <li><b>sed</b> - stream editor for transforming output</li>
484     <li><b>sh</b> - Bourne shell for make build scripts</li>
485     <li><b>tar</b> - tape archive for distribution generation</li>
486     <li><b>test</b> - test things in file system</li>
487     <li><b>unzip*</b> - unzip command for distribution checking</li>
488     <li><b>zip*</b> - zip command for distribution generation</li>
489   </ul>
490 </div>
491
492 <!-- ======================================================================= -->
493 <div class="doc_subsection">
494   <a name="brokengcc">Broken versions of GCC</a>
495 </div>
496
497 <div class="doc_text">
498
499 <p>LLVM is very demanding of the host C++ compiler, and as such tends to expose
500 bugs in the compiler.  In particular, several versions of GCC crash when trying
501 to compile LLVM.  We routinely use GCC 3.3.3, 3.4.0, and Apple 4.0.1 
502 successfully with them (however, see below).  Other versions of GCC will 
503 probably work as well.  GCC versions listed
504 here are known to not work.  If you are using one of these versions, please try
505 to upgrade your GCC to something more recent.  If you run into a problem with a
506 version of GCC not listed here, please <a href="mailto:llvmdev@cs.uiuc.edu">let
507 us know</a>.  Please use the "<tt>gcc -v</tt>" command to find out which version
508 of GCC you are using.
509 </p>
510
511 <p><b>GCC versions prior to 3.0</b>: GCC 2.96.x and before had several
512 problems in the STL that effectively prevent it from compiling LLVM.
513 </p>
514
515 <p><b>GCC 3.2.2</b>: This version of GCC fails to compile LLVM.</p>
516
517 <p><b>GCC 3.3.2</b>: This version of GCC suffered from a <a 
518 href="http://gcc.gnu.org/PR13392">serious bug</a> which causes it to crash in
519 the "<tt>convert_from_eh_region_ranges_1</tt>" GCC function.</p>
520
521 <p><b>Cygwin GCC 3.3.3</b>: The version of GCC 3.3.3 commonly shipped with 
522    Cygwin does not work.  Please <a href="CFEBuildInstrs.html#cygwin">upgrade 
523    to a newer version</a> if possible.</p>
524 <p><b>SuSE GCC 3.3.3</b>: The version of GCC 3.3.3 shipped with SuSE 9.1 (and 
525    possibly others) does not compile LLVM correctly (it appears that exception 
526    handling is broken in some cases).  Please download the FSF 3.3.3 or upgrade
527    to a newer version of GCC.</p>
528 <p><b>IA-64 GCC 4.0.0</b>: The IA-64 version of GCC 4.0.0 is known to
529    miscompile LLVM.</p>
530 <p><b>Apple Xcode 2.3</b>: GCC crashes when compiling LLVM at -O3 (which is the
531    default with ENABLE_OPTIMIZED=1.  To work around this, build with 
532    "ENABLE_OPTIMIZED=1 OPTIMIZE_OPTION=-O2".</p>
533 <p><b>GCC 4.1.1</b>: GCC fails to build LLVM with template concept check errors
534       compiling some files.  At the time of this writing, GCC mainline (4.2)
535       did not share the problem.</p>
536 <p><b>GNU ld 2.16.X</b>. Some 2.16.X versions of the ld linker will produce very
537 long warning messages complaining that some ".gnu.linkonce.t.*" symbol was
538 defined in a discarded section. You can safely ignore these messages as they are
539 erroneous and the linkage is correct.  These messages disappear using ld
540 2.17.</p>
541 </div>
542
543
544
545 <!-- *********************************************************************** -->
546 <div class="doc_section">
547   <a name="starting"><b>Getting Started with LLVM</b></a>
548 </div>
549 <!-- *********************************************************************** -->
550
551 <div class="doc_text">
552
553 <p>The remainder of this guide is meant to get you up and running with
554 LLVM and to give you some basic information about the LLVM environment.</p>
555
556 <p>The later sections of this guide describe the <a
557 href="#layout">general layout</a> of the the LLVM source tree, a <a
558 href="#tutorial">simple example</a> using the LLVM tool chain, and <a
559 href="#links">links</a> to find more information about LLVM or to get
560 help via e-mail.</p>
561 </div>
562
563 <!-- ======================================================================= -->
564 <div class="doc_subsection">
565   <a name="terminology">Terminology and Notation</a>
566 </div>
567
568 <div class="doc_text">
569
570 <p>Throughout this manual, the following names are used to denote paths
571 specific to the local system and working environment.  <i>These are not
572 environment variables you need to set but just strings used in the rest
573 of this document below</i>.  In any of the examples below, simply replace
574 each of these names with the appropriate pathname on your local system.
575 All these paths are absolute:</p>
576
577 <dl>
578     <dt>SRC_ROOT
579     <dd>
580     This is the top level directory of the LLVM source tree.
581     <br><br>
582
583     <dt>OBJ_ROOT
584     <dd>
585     This is the top level directory of the LLVM object tree (i.e. the
586     tree where object files and compiled programs will be placed.  It
587     can be the same as SRC_ROOT).
588     <br><br>
589
590     <dt>LLVMGCCDIR
591     <dd>
592     This is where the LLVM GCC Front End is installed.
593     <p>
594     For the pre-built GCC front end binaries, the LLVMGCCDIR is
595     <tt>llvm-gcc/<i>platform</i>/llvm-gcc</tt>.
596 </dl>
597
598 </div>
599
600 <!-- ======================================================================= -->
601 <div class="doc_subsection">
602   <a name="environment">Setting Up Your Environment</a>
603 </div>
604
605 <div class="doc_text">
606
607 <p>
608 In order to compile and use LLVM, you may need to set some environment
609 variables.
610
611 <dl>
612   <dt><tt>LLVM_LIB_SEARCH_PATH</tt>=<tt>/path/to/your/bytecode/libs</tt></dt>
613   <dd>[Optional] This environment variable helps LLVM linking tools find the
614   locations of your bytecode libraries. It is provided only as a
615   convenience since you can specify the paths using the -L options of the
616   tools and the C/C++ front-end will automatically use the bytecode files
617   installed in its
618   <tt>lib</tt> directory.</dd>
619 </dl>
620
621 </div>
622
623 <!-- ======================================================================= -->
624 <div class="doc_subsection">
625   <a name="unpack">Unpacking the LLVM Archives</a>
626 </div>
627
628 <div class="doc_text">
629
630 <p>
631 If you have the LLVM distribution, you will need to unpack it before you
632 can begin to compile it.  LLVM is distributed as a set of two files: the LLVM
633 suite and the LLVM GCC front end compiled for your platform.  There is an
634 additional test suite that is optional.  Each file is a TAR archive that is
635 compressed with the gzip program.
636 </p>
637
638 <p>The files are as follows, with <em>x.y</em> marking the version number:
639 <dl>
640   <dt><tt>llvm-x.y.tar.gz</tt></dt>
641   <dd>Source release for the LLVM libraries and tools.<br/></dd>
642
643   <dt><tt>llvm-test-x.y.tar.gz</tt></dt>
644   <dd>Source release for the LLVM test suite.</dd>
645
646   <dt><tt>llvm-gcc3.4-x.y.source.tar.gz</tt></dt>
647   <dd>Source release of the LLVM GCC 3.4 front end.<br/></dd>
648         
649   <dt><tt>llvm-gcc3.4-x.y-platform.tar.gz</tt></dt>
650   <dd>Binary release of the LLVM GCC 3.4 for a specific platform.<br/></dd>
651
652   <dt><tt>llvm-gcc4-x.y.source.tar.gz</tt></dt>
653   <dd>Source release of the llvm-gcc4 front end.  See README.LLVM in the root
654       directory for build instructions.<br/></dd>
655
656   <dt><tt>llvm-gcc4-x.y-platform.tar.gz</tt></dt>
657   <dd>Binary release of the llvm-gcc4 front end for a specific platform.<br/></dd>
658
659 </dl>
660
661 <p>It is also possible to download the sources of the llvm-gcc4 front end from a
662 read-only subversion mirror at
663 svn://anonsvn.opensource.apple.com/svn/llvm/trunk. </p>
664
665 </div>
666
667 <!-- ======================================================================= -->
668 <div class="doc_subsection">
669   <a name="checkout">Checkout LLVM from CVS</a>
670 </div>
671
672 <div class="doc_text">
673
674 <p>If you have access to our CVS repository, you can get a fresh copy of
675 the entire source code.  All you need to do is check it out from CVS as
676 follows:</p>
677
678 <ul>
679 <li><tt>cd <i>where-you-want-llvm-to-live</i></tt>
680   <li><tt>cvs -d :pserver:anon@llvm.org:/var/cvs/llvm login</tt>
681   <li>Hit the return key when prompted for the password.
682   <li><tt>cvs -z3 -d :pserver:anon@llvm.org:/var/cvs/llvm co
683       llvm</tt>
684 </ul>
685
686 <p>This will create an '<tt>llvm</tt>' directory in the current
687 directory and fully populate it with the LLVM source code, Makefiles,
688 test directories, and local copies of documentation files.</p>
689
690 <p>If you want to get a specific release (as opposed to the most recent
691 revision), you can specify a label.  The following releases have the following
692 labels:</p>
693
694 <ul>
695 <li>Release 1.9: <b>RELEASE_19</b></li>D
696 <li>Release 1.8: <b>RELEASE_18</b></li>
697 <li>Release 1.7: <b>RELEASE_17</b></li>
698 <li>Release 1.6: <b>RELEASE_16</b></li>
699 <li>Release 1.5: <b>RELEASE_15</b></li>
700 <li>Release 1.4: <b>RELEASE_14</b></li>
701 <li>Release 1.3: <b>RELEASE_13</b></li>
702 <li>Release 1.2: <b>RELEASE_12</b></li>
703 <li>Release 1.1: <b>RELEASE_11</b></li>
704 <li>Release 1.0: <b>RELEASE_1</b></li>
705 </ul>
706
707 <p>If you would like to get the LLVM test suite (a separate package as of 1.4),
708 you get it from the CVS repository:</p>
709 <pre>
710   cd llvm/projects
711   cvs -z3 -d :pserver:anon@llvm.org:/var/cvs/llvm co llvm-test
712 </pre>
713 <p>By placing it in the <tt>llvm/projects</tt>, it will be automatically
714 configured by the LLVM configure script as well as automatically updated when
715 you run <tt>cvs update</tt>.</p>
716
717 <p>If you would like to get the GCC 3.4 front end source code, you can also get it from the CVS repository:</p>
718
719 <pre>
720   cvs -z3 -d :pserver:anon@llvm.org:/var/cvs/llvm co llvm-gcc
721 </pre>
722
723 <p>Please note that you must follow <a href="CFEBuildInstrs.html">these 
724 instructions</a> to successfully build the LLVM GCC front-end.</p>
725
726 </div>
727
728 <!-- ======================================================================= -->
729 <div class="doc_subsection">
730   <a name="installcf">Install the GCC Front End</a>
731 </div>
732
733 <div class="doc_text">
734
735 <p>Before configuring and compiling the LLVM suite, you need to extract the LLVM
736 GCC front end from the binary distribution.  It is used for building the
737 bytecode libraries later used by the GCC front end for linking programs, and its
738 location must be specified when the LLVM suite is configured.</p>
739
740 <p>To install the GCC front end, do the following:</p>
741
742 <ol>
743   <li><tt>cd <i>where-you-want-the-front-end-to-live</i></tt></li>
744   <li><tt>gunzip --stdout llvmgcc-<i>version</i>.<i>platform</i>.tar.gz | tar -xvf
745       -</tt></li>
746 </ol>
747
748 <p>Next, you will need to fix your system header files (llvm-gcc3.4 only):</p>
749
750 <p><tt>cd llvm-gcc3.4/<i>platform</i><br>
751    ./fixheaders</tt></p>
752
753 <p>The binary versions of the GCC front end may not suit all of your needs.  For
754 example, the binary distribution may include an old version of a system header
755 file, not "fix" a header file that needs to be fixed for GCC, or it may be
756 linked with libraries not available on your system.</p>
757
758 <p>In cases like these, you may want to try <a
759 href="CFEBuildInstrs.html">building the GCC front end from source.</a> This is
760 not for the faint of heart, so be forewarned.</p>
761
762 </div>
763
764 <!-- ======================================================================= -->
765 <div class="doc_subsection">
766   <a name="config">Local LLVM Configuration</a>
767 </div>
768
769 <div class="doc_text">
770
771 <p>Once checked out from the CVS repository, the LLVM suite source code must be
772 configured via the <tt>configure</tt> script.  This script sets variables in the
773 various <tt>*.in</tt> files, most notably <tt>llvm/Makefile.config</tt> and 
774 <tt>llvm/include/Config/config.h</tt>.  It also populates <i>OBJ_ROOT</i> with 
775 the Makefiles needed to begin building LLVM.</p>
776
777 <p>The following environment variables are used by the <tt>configure</tt>
778 script to configure the build system:</p>
779
780 <table summary="LLVM configure script environment variables">
781   <tr><th>Variable</th><th>Purpose</th></tr>
782   <tr>
783     <td>CC</td>
784     <td>Tells <tt>configure</tt> which C compiler to use.  By default,
785         <tt>configure</tt> will look for the first GCC C compiler in
786         <tt>PATH</tt>.  Use this variable to override
787         <tt>configure</tt>'s default behavior.</td>
788   </tr>
789   <tr>
790     <td>CXX</td>
791     <td>Tells <tt>configure</tt> which C++ compiler to use.  By default,
792        <tt>configure</tt> will look for the first GCC C++ compiler in
793        <tt>PATH</tt>.  Use this variable to override
794        <tt>configure</tt>'s default behavior.</td>
795   </tr>
796 </table>
797
798 <p>The following options can be used to set or enable LLVM specific options:</p>
799
800 <dl>
801   <dt><i>--with-llvmgccdir</i></dt>
802   <dd>Path to the LLVM C/C++ FrontEnd to be used with this LLVM configuration. 
803   The value of this option should specify the full pathname of the C/C++ Front
804   End to be used. If this option is not provided, the PATH will be searched for
805   a program named <i>llvm-gcc</i> and the C/C++ FrontEnd install directory will
806   be inferred from the path found. If the option is not given, and no llvm-gcc
807   can be found in the path then a warning will be produced by 
808   <tt>configure</tt> indicating this situation. LLVM may still be built with 
809   the <tt>tools-only</tt> target but attempting to build the runtime libraries
810   will fail as these libraries require llvm-gcc and llvm-g++. See 
811   <a href="#installcf">Install the GCC Front End</a> for details on installing
812   the C/C++ Front End. See
813   <a href="CFEBuildInstrs.html">Bootstrapping the LLVM C/C++ Front-End</a>
814   for details on building the C/C++ Front End.</dd>
815   <dt><i>--with-tclinclude</i></dt>
816   <dd>Path to the tcl include directory under which <tt>tclsh</tt> can be
817   found. Use this if you have multiple tcl installations on your machine and you
818   want to use a specific one (8.x) for LLVM. LLVM only uses tcl for running the
819   dejagnu based test suite in <tt>llvm/test</tt>. If you don't specify this
820   option, the LLVM configure script will search for the tcl 8.4 and 8.3
821   releases.
822   <br><br>
823   </dd>
824   <dt><i>--enable-optimized</i></dt>
825   <dd>
826     Enables optimized compilation by default (debugging symbols are removed
827     and GCC optimization flags are enabled).  The default is to use an
828     unoptimized build (also known as a debug build).
829     <br><br>
830   </dd>
831   <dt><i>--enable-debug-runtime</i></dt>
832   <dd>
833     Enables debug symbols in the runtime libraries. The default is to strip
834     debug symbols from the runtime libraries. 
835   </dd>
836   <dt><i>--enable-jit</i></dt>
837   <dd>
838     Compile the Just In Time (JIT) compiler functionality.  This is not
839     available
840     on all platforms.  The default is dependent on platform, so it is best
841     to explicitly enable it if you want it.
842     <br><br>
843   </dd>
844   <dt><i>--enable-targets=</i><tt>target-option</tt></dt>
845   <dd>Controls which targets will be built and linked into llc. The default 
846   value for <tt>target_options</tt> is "all" which builds and links all 
847   available targets.  The value "host-only" can be specified to build only a 
848   native compiler (no cross-compiler targets available). The "native" target is 
849   selected as the target of the build host. You can also specify a comma 
850   separated list of target names that you want available in llc. The target 
851   names use all lower case. The current set of targets is: <br/>
852   <tt>alpha, ia64, powerpc, skeleton, sparc, x86</tt>.
853   <br><br></dd>
854   <dt><i>--enable-doxygen</i></dt>
855   <dd>Look for the doxygen program and enable construction of doxygen based
856   documentation from the source code. This is disabled by default because 
857   generating the documentation can take a long time and producess 100s of 
858   megabytes of output.</dd>
859 </dl>
860
861 <p>To configure LLVM, follow these steps:</p>
862
863 <ol>
864     <li>Change directory into the object root directory:
865     <br>
866     <tt>cd <i>OBJ_ROOT</i></tt>
867     <br><br>
868
869     <li>Run the <tt>configure</tt> script located in the LLVM source tree:
870     <br>
871     <tt><i>SRC_ROOT</i>/configure --prefix=/install/path [other options]</tt>
872     <br><br>
873 </ol>
874
875 </div>
876
877 <!-- ======================================================================= -->
878 <div class="doc_subsection">
879   <a name="compile">Compiling the LLVM Suite Source Code</a>
880 </div>
881
882 <div class="doc_text">
883
884 <p>Once you have configured LLVM, you can build it.  There are three types of
885 builds:</p>
886
887 <dl>
888     <dt>Debug Builds
889     <dd>
890     These builds are the default when one types <tt>gmake</tt> (unless the
891     <tt>--enable-optimized</tt> option was used during configuration).  The
892     build system will compile the tools and libraries with debugging
893     information.
894     <br><br>
895
896     <dt>Release (Optimized) Builds
897     <dd>
898     These builds are enabled with the <tt>--enable-optimized</tt> option to
899     <tt>configure</tt> or by specifying <tt>ENABLE_OPTIMIZED=1</tt> on the
900     <tt>gmake</tt> command line.  For these builds, the build system will
901     compile the tools and libraries with GCC optimizations enabled and strip
902     debugging information from the libraries and executables it generates. 
903     <br><br>
904
905     <dt>Profile Builds
906     <dd>
907     These builds are for use with profiling.  They compile profiling
908     information into the code for use with programs like <tt>gprof</tt>.
909     Profile builds must be started by specifying <tt>ENABLE_PROFILING=1</tt>
910     on the <tt>gmake</tt> command line.
911 </dl>
912
913 <p>Once you have LLVM configured, you can build it by entering the
914 <i>OBJ_ROOT</i> directory and issuing the following command:</p>
915
916 <p><tt>gmake</tt></p>
917
918 <p>If the build fails, please <a href="#brokengcc">check here</a> to see if you
919 are using a version of GCC that is known not to compile LLVM.</p>
920
921 <p>
922 If you have multiple processors in your machine, you may wish to use some of
923 the parallel build options provided by GNU Make.  For example, you could use the
924 command:</p>
925
926 <p><tt>gmake -j2</tt></p>
927
928 <p>There are several special targets which are useful when working with the LLVM
929 source code:</p>
930
931 <dl>
932   <dt><tt>gmake clean</tt>
933   <dd>
934   Removes all files generated by the build.  This includes object files,
935   generated C/C++ files, libraries, and executables.
936   <br><br>
937
938   <dt><tt>gmake dist-clean</tt>
939   <dd>
940   Removes everything that <tt>gmake clean</tt> does, but also removes files
941   generated by <tt>configure</tt>.  It attempts to return the source tree to the
942   original state in which it was shipped.
943   <br><br>
944
945   <dt><tt>gmake install</tt>
946   <dd>
947   Installs LLVM header files, libraries, tools, and documentation in a
948   hierarchy 
949   under $PREFIX, specified with <tt>./configure --prefix=[dir]</tt>, which 
950   defaults to <tt>/usr/local</tt>.
951   <br><br>
952
953   <dt><tt>gmake -C runtime install-bytecode</tt>
954   <dd>
955   Assuming you built LLVM into $OBJDIR, when this command is run, it will 
956   install bytecode libraries into the GCC front end's bytecode library 
957   directory.  If you need to update your bytecode libraries,
958   this is the target to use once you've built them.
959   <br><br>
960 </dl>
961
962 <p>Please see the <a href="MakefileGuide.html">Makefile Guide</a> for further
963 details on these <tt>make</tt> targets and descriptions of other targets
964 available.</p>
965
966 <p>It is also possible to override default values from <tt>configure</tt> by
967 declaring variables on the command line.  The following are some examples:</p>
968
969 <dl>
970   <dt><tt>gmake ENABLE_OPTIMIZED=1</tt>
971   <dd>
972   Perform a Release (Optimized) build.
973   <br><br>
974
975   <dt><tt>gmake ENABLE_OPTIMIZED=1 DISABLE_ASSERTIONS=1</tt>
976   <dd>
977   Perform a Release (Optimized) build without assertions enabled.
978   <br><br>
979
980   <dt><tt>gmake ENABLE_PROFILING=1</tt>
981   <dd>
982   Perform a Profiling build.
983   <br><br>
984
985   <dt><tt>gmake VERBOSE=1</tt>
986   <dd>
987   Print what <tt>gmake</tt> is doing on standard output.
988   <br><br>
989
990   <dt><tt>gmake TOOL_VERBOSE=1</tt></dt>
991   <dd>Ask each tool invoked by the makefiles to print out what it is doing on 
992   the standard output. This also implies <tt>VERBOSE=1</tt>.
993   <br><br></dd>
994 </dl>
995
996 <p>Every directory in the LLVM object tree includes a <tt>Makefile</tt> to build
997 it and any subdirectories that it contains.  Entering any directory inside the
998 LLVM object tree and typing <tt>gmake</tt> should rebuild anything in or below
999 that directory that is out of date.</p>
1000
1001 </div>
1002
1003 <!-- ======================================================================= -->
1004 <div class="doc_subsection">
1005   <a name="cross-compile">Cross-Compiling LLVM</a>
1006 </div>
1007
1008 <div class="doc_text">
1009   <p>It is possible to cross-compile LLVM. That is, you can create LLVM
1010   executables and libraries for a platform different than the one one which you
1011   are compiling.  To do this, a few additional steps are 
1012   required. <sup><a href="#ccn_1">1</a></sup> To cross-compile LLVM, use
1013   these instructions:</p>
1014   <ol>
1015     <li>Configure and build LLVM as a native compiler. You will need
1016     just <tt>TableGen</tt> from that build.
1017       <ul>
1018         <li>If you have <tt>$LLVM_OBJ_ROOT=$LLVM_SRC_ROOT</tt> just execute 
1019           <tt>make -C utils/TableGen</tt> after configuring.</li>
1020         <li>Otherwise you will need to monitor building process and terminate 
1021           it just after <tt>TableGen</tt> was built.</li>
1022       </ul>
1023     </li>
1024     <li>Copy the TableGen binary to somewhere safe (out of your build tree).
1025     </li>
1026     <li>Configure LLVM to build with a cross-compiler. To do this, supply the
1027     configure script with <tt>--build</tt> and <tt>--host</tt> options that
1028     are different. The values of these options must be legal target triples 
1029     that your GCC compiler supports.</li>
1030     <li>Put the saved <tt>TableGen</tt> executable into the
1031     into <tt>$LLVM_OBJ_ROOT/{BUILD_TYPE}/bin</tt> directory (e.g. into 
1032     <tt>.../Release/bin</tt> for a Release build).</li>
1033     <li>Build LLVM  as usual.</li>
1034   </ol>
1035   <p>The result of such a build will produce executables that are not executable
1036   on your build host (--build option) but can be executed on your compile host
1037   (--host option).</p>
1038   <p><b>Notes:</b></p>
1039   <div class="doc_notes">
1040     <ol>
1041       <li><a name="ccn_1">Cross-compiling</a> was tested only with Linux as 
1042       build platform and Windows as host using mingw32 cross-compiler. Other
1043       combinations have not been tested.</li>
1044     </ol>
1045   </div>
1046 </div>
1047
1048 <!-- ======================================================================= -->
1049 <div class="doc_subsection">
1050   <a name="objfiles">The Location of LLVM Object Files</a>
1051 </div>
1052
1053 <div class="doc_text">
1054
1055 <p>The LLVM build system is capable of sharing a single LLVM source tree among
1056 several LLVM builds.  Hence, it is possible to build LLVM for several different
1057 platforms or configurations using the same source tree.</p>
1058
1059 <p>This is accomplished in the typical autoconf manner:</p>
1060
1061 <ul>
1062   <li><p>Change directory to where the LLVM object files should live:</p>
1063
1064       <p><tt>cd <i>OBJ_ROOT</i></tt></p></li>
1065
1066   <li><p>Run the <tt>configure</tt> script found in the LLVM source
1067       directory:</p>
1068
1069       <p><tt><i>SRC_ROOT</i>/configure</tt></p></li>
1070 </ul>
1071
1072 <p>The LLVM build will place files underneath <i>OBJ_ROOT</i> in directories
1073 named after the build type:</p>
1074
1075 <dl>
1076   <dt>Debug Builds
1077   <dd>
1078   <dl>
1079     <dt>Tools
1080     <dd><tt><i>OBJ_ROOT</i>/Debug/bin</tt>
1081     <dt>Libraries
1082     <dd><tt><i>OBJ_ROOT</i>/Debug/lib</tt>
1083   </dl>
1084   <br><br>
1085
1086   <dt>Release Builds
1087   <dd>
1088   <dl>
1089     <dt>Tools
1090     <dd><tt><i>OBJ_ROOT</i>/Release/bin</tt>
1091     <dt>Libraries
1092     <dd><tt><i>OBJ_ROOT</i>/Release/lib</tt>
1093   </dl>
1094   <br><br>
1095
1096   <dt>Profile Builds
1097   <dd>
1098   <dl>
1099     <dt>Tools
1100     <dd><tt><i>OBJ_ROOT</i>/Profile/bin</tt>
1101     <dt>Libraries
1102     <dd><tt><i>OBJ_ROOT</i>/Profile/lib</tt>
1103   </dl>
1104 </dl>
1105
1106 </div>
1107
1108 <!-- ======================================================================= -->
1109 <div class="doc_subsection">
1110   <a name="optionalconfig">Optional Configuration Items</a>
1111 </div>
1112
1113 <div class="doc_text">
1114
1115 <p>
1116 If you're running on a Linux system that supports the "<a
1117   href="http://www.tat.physik.uni-tuebingen.de/~rguenth/linux/binfmt_misc.html">
1118   binfmt_misc</a>"
1119 module, and you have root access on the system, you can set your system up to
1120 execute LLVM bytecode files directly.  To do this, use commands like this (the
1121 first command may not be required if you are already using the module):</p>
1122
1123 <div class="doc_code">
1124 <pre>
1125    $ mount -t binfmt_misc none /proc/sys/fs/binfmt_misc
1126    $ echo ':llvm:M::llvm::/path/to/lli:' &gt; /proc/sys/fs/binfmt_misc/register
1127    $ chmod u+x hello.bc                (if needed)
1128    $ ./hello.bc
1129 </pre>
1130 </div>
1131
1132 <p>
1133 This allows you to execute LLVM bytecode files directly.  Thanks to Jack
1134 Cummings for pointing this out!
1135 </p>
1136
1137 </div>
1138
1139
1140 <!-- *********************************************************************** -->
1141 <div class="doc_section">
1142   <a name="layout"><b>Program Layout</b></a>
1143 </div>
1144 <!-- *********************************************************************** -->
1145
1146 <div class="doc_text">
1147
1148 <p>One useful source of information about the LLVM source base is the LLVM <a
1149 href="http://www.doxygen.org">doxygen</a> documentation available at <tt><a
1150 href="http://llvm.org/doxygen/">http://llvm.org/doxygen/</a></tt>.
1151 The following is a brief introduction to code layout:</p>
1152
1153 </div>
1154
1155 <!-- ======================================================================= -->
1156 <div class="doc_subsection"><a name="cvsdir"><tt>CVS</tt> directories</a></div>
1157 <div class="doc_text">
1158 <p>Every directory checked out of CVS will contain a <tt>CVS</tt> directory; for
1159 the most part these can just be ignored.</p>
1160 </div>
1161
1162 <!-- ======================================================================= -->
1163 <div class="doc_subsection"><a name="examples"><tt>llvm/examples</tt></a></div>
1164 <div class="doc_text">
1165   <p>This directory contains some simple examples of how to use the LLVM IR and
1166   JIT.</p>
1167 </div>
1168
1169 <!-- ======================================================================= -->
1170 <div class="doc_subsection"><a name="include"><tt>llvm/include</tt></a></div>
1171 <div class="doc_text">
1172
1173 <p>This directory contains public header files exported from the LLVM
1174 library. The three main subdirectories of this directory are:</p>
1175
1176 <dl>
1177   <dt><tt><b>llvm/include/llvm</b></tt></dt>
1178   <dd>This directory contains all of the LLVM specific header files.  This 
1179   directory also has subdirectories for different portions of LLVM: 
1180   <tt>Analysis</tt>, <tt>CodeGen</tt>, <tt>Target</tt>, <tt>Transforms</tt>, 
1181   etc...</dd>
1182
1183   <dt><tt><b>llvm/include/llvm/Support</b></tt></dt>
1184   <dd>This directory contains generic support libraries that are provided with 
1185   LLVM but not necessarily specific to LLVM. For example, some C++ STL utilities 
1186   and a Command Line option processing library store their header files here.
1187   </dd>
1188
1189   <dt><tt><b>llvm/include/llvm/Config</b></tt></dt>
1190   <dd>This directory contains header files configured by the <tt>configure</tt> 
1191   script.  They wrap "standard" UNIX and C header files.  Source code can 
1192   include these header files which automatically take care of the conditional 
1193   #includes that the <tt>configure</tt> script generates.</dd>
1194 </dl>
1195 </div>
1196
1197 <!-- ======================================================================= -->
1198 <div class="doc_subsection"><a name="lib"><tt>llvm/lib</tt></a></div>
1199 <div class="doc_text">
1200
1201 <p>This directory contains most of the source files of the LLVM system. In LLVM,
1202 almost all code exists in libraries, making it very easy to share code among the
1203 different <a href="#tools">tools</a>.</p>
1204
1205 <dl>
1206   <dt><tt><b>llvm/lib/VMCore/</b></tt></dt>
1207   <dd> This directory holds the core LLVM source files that implement core 
1208   classes like Instruction and BasicBlock.</dd>
1209
1210   <dt><tt><b>llvm/lib/AsmParser/</b></tt></dt>
1211   <dd>This directory holds the source code for the LLVM assembly language parser 
1212   library.</dd>
1213
1214   <dt><tt><b>llvm/lib/ByteCode/</b></tt></dt>
1215   <dd>This directory holds code for reading and write LLVM bytecode.</dd>
1216
1217   <dt><tt><b>llvm/lib/Analysis/</b></tt><dd>This directory contains a variety of
1218   different program analyses, such as Dominator Information, Call Graphs,
1219   Induction Variables, Interval Identification, Natural Loop Identification,
1220   etc.</dd>
1221
1222   <dt><tt><b>llvm/lib/Transforms/</b></tt></dt>
1223   <dd> This directory contains the source code for the LLVM to LLVM program 
1224   transformations, such as Aggressive Dead Code Elimination, Sparse Conditional 
1225   Constant Propagation, Inlining, Loop Invariant Code Motion, Dead Global 
1226   Elimination, and many others.</dd>
1227
1228   <dt><tt><b>llvm/lib/Target/</b></tt></dt>
1229   <dd> This directory contains files that describe various target architectures
1230   for code generation.  For example, the <tt>llvm/lib/Target/X86</tt> 
1231   directory holds the X86 machine description while
1232   <tt>llvm/lib/Target/CBackend</tt> implements the LLVM-to-C converter.</dd>
1233     
1234   <dt><tt><b>llvm/lib/CodeGen/</b></tt></dt>
1235   <dd> This directory contains the major parts of the code generator: Instruction 
1236   Selector, Instruction Scheduling, and Register Allocation.</dd>
1237
1238   <dt><tt><b>llvm/lib/Debugger/</b></tt></dt>
1239   <dd> This directory contains the source level debugger library that makes 
1240   it possible to instrument LLVM programs so that a debugger could identify 
1241   source code locations at which the program is executing.</dd>
1242
1243   <dt><tt><b>llvm/lib/ExecutionEngine/</b></tt></dt>
1244   <dd> This directory contains libraries for executing LLVM bytecode directly 
1245   at runtime in both interpreted and JIT compiled fashions.</dd>
1246
1247   <dt><tt><b>llvm/lib/Support/</b></tt></dt>
1248   <dd> This directory contains the source code that corresponds to the header 
1249   files located in <tt>llvm/include/Support/</tt>.</dd>
1250
1251   <dt><tt><b>llvm/lib/System/</b></tt></dt>
1252   <dd>This directory contains the operating system abstraction layer that
1253   shields LLVM from platform-specific coding.</dd>
1254 </dl>
1255
1256 </div>
1257
1258 <!-- ======================================================================= -->
1259 <div class="doc_subsection"><a name="projects"><tt>llvm/projects</tt></a></div>
1260 <div class="doc_text">
1261   <p>This directory contains projects that are not strictly part of LLVM but are
1262   shipped with LLVM. This is also the directory where you should create your own
1263   LLVM-based projects. See <tt>llvm/projects/sample</tt> for an example of how
1264   to set up your own project. See <tt>llvm/projects/Stacker</tt> for a fully 
1265   functional example of a compiler front end.</p>
1266 </div>
1267
1268 <!-- ======================================================================= -->
1269 <div class="doc_subsection"><a name="runtime"><tt>llvm/runtime</tt></a></div>
1270 <div class="doc_text">
1271
1272 <p>This directory contains libraries which are compiled into LLVM bytecode and
1273 used when linking programs with the GCC front end.  Most of these libraries are
1274 skeleton versions of real libraries; for example, libc is a stripped down
1275 version of glibc.</p>
1276
1277 <p>Unlike the rest of the LLVM suite, this directory needs the LLVM GCC front
1278 end to compile.</p>
1279
1280 </div>
1281
1282 <!-- ======================================================================= -->
1283 <div class="doc_subsection"><a name="test"><tt>llvm/test</tt></a></div>
1284 <div class="doc_text">
1285   <p>This directory contains feature and regression tests and other basic sanity
1286   checks on the LLVM infrastructure. These are intended to run quickly and cover
1287   a lot of territory without being exhaustive.</p>
1288 </div>
1289
1290 <!-- ======================================================================= -->
1291 <div class="doc_subsection"><a name="llvmtest"><tt>llvm-test</tt></a></div>
1292 <div class="doc_text">
1293   <p>This is not a directory in the normal llvm module; it is a separate CVS
1294   module that must be checked out (usually to <tt>projects/llvm-test</tt>). This
1295   module contains a comprehensive correctness, performance, and benchmarking
1296   test
1297   suite for LLVM. It is a separate CVS module because not every LLVM user is
1298   interested in downloading or building such a comprehensive test suite. For
1299   further details on this test suite, please see the 
1300   <a href="TestingGuide.html">Testing Guide</a> document.</p>
1301 </div>
1302
1303 <!-- ======================================================================= -->
1304 <div class="doc_subsection"><a name="tools"><tt>llvm/tools</tt></a></div>
1305 <div class="doc_text">
1306
1307 <p>The <b>tools</b> directory contains the executables built out of the
1308 libraries above, which form the main part of the user interface.  You can
1309 always get help for a tool by typing <tt>tool_name --help</tt>.  The
1310 following is a brief introduction to the most important tools.  More detailed
1311 information is in the <a href="CommandGuide/index.html">Command Guide</a>.</p>
1312
1313 <dl>
1314
1315   <dt><tt><b>bugpoint</b></tt></dt>
1316   <dd><tt>bugpoint</tt> is used to debug
1317   optimization passes or code generation backends by narrowing down the
1318   given test case to the minimum number of passes and/or instructions that
1319   still cause a problem, whether it is a crash or miscompilation. See <a
1320   href="HowToSubmitABug.html">HowToSubmitABug.html</a> for more information
1321   on using <tt>bugpoint</tt>.</dd>
1322
1323   <dt><tt><b>llvmc</b></tt></dt>
1324   <dd>The LLVM Compiler Driver. This program can
1325   be configured to utilize both LLVM and non-LLVM compilation tools to enable
1326   pre-processing, translation, optimization, assembly, and linking of programs
1327   all from one command line. <tt>llvmc</tt> also takes care of processing the
1328   dependent libraries found in bytecode. This reduces the need to get the
1329   traditional <tt>-l&lt;name&gt;</tt> options right on the command line. Please
1330   note that this tool, while functional, is still experimental and not feature
1331   complete.</dd>
1332
1333   <dt><tt><b>llvm-ar</b></tt></dt>
1334   <dd>The archiver produces an archive containing
1335   the given LLVM bytecode files, optionally with an index for faster
1336   lookup.</dd>
1337   
1338   <dt><tt><b>llvm-as</b></tt></dt>
1339   <dd>The assembler transforms the human readable LLVM assembly to LLVM 
1340   bytecode.</dd>
1341
1342   <dt><tt><b>llvm-dis</b></tt></dt>
1343   <dd>The disassembler transforms the LLVM bytecode to human readable 
1344   LLVM assembly.</dd>
1345
1346   <dt><tt><b>llvm-ld</b></tt></dt>
1347   <dd><tt>llvm-ld</tt> is very similar to gccld and provides a general purpose
1348   and extensible linker for LLVM. This is the linker invoked by <tt>llvmc</tt>.
1349   It allows optimization modules to be loaded so that language specific
1350   optimizations can be applied at link time. This tool is considered
1351   experimental.</dd>
1352
1353   <dt><tt><b>llvm-link</b></tt></dt>
1354   <dd><tt>llvm-link</tt>, not surprisingly, links multiple LLVM modules into 
1355   a single program.</dd>
1356   
1357   <dt><tt><b>lli</b></tt></dt>
1358   <dd><tt>lli</tt> is the LLVM interpreter, which
1359   can directly execute LLVM bytecode (although very slowly...). In addition
1360   to a simple interpreter, <tt>lli</tt> also has a tracing mode (entered by
1361   specifying <tt>-trace</tt> on the command line). Finally, for
1362   architectures that support it (currently x86, Sparc, and PowerPC), by default,
1363   <tt>lli</tt> will function as a Just-In-Time compiler (if the
1364   functionality was compiled in), and will execute the code <i>much</i>
1365   faster than the interpreter.</dd>
1366
1367   <dt><tt><b>llc</b></tt></dt>
1368   <dd> <tt>llc</tt> is the LLVM backend compiler, which
1369   translates LLVM bytecode to a native code assembly file or to C code (with
1370   the -march=c option).</dd>
1371
1372   <dt><tt><b>llvm-gcc</b></tt></dt>
1373   <dd><tt>llvm-gcc</tt> is a GCC-based C frontend
1374   that has been retargeted to emit LLVM code as the machine code output.  It
1375   works just like any other GCC compiler, taking the typical <tt>-c, -S, -E,
1376   -o</tt> options that are typically used.  The source code for the
1377   <tt>llvm-gcc</tt> tool is available as a separate CVS module.
1378   <blockquote>
1379     <dl>
1380       <dt><tt><b>gccas</b></tt></dt>
1381       <dd>This tool is invoked by the <tt>llvm-gcc</tt> frontend as the 
1382       "assembler" part of the compiler.  This tool actually assembles LLVM 
1383       assembly to LLVM bytecode, performs a variety of optimizations, and 
1384       outputs LLVM bytecode.  Thus when you invoke 
1385       <tt>llvm-gcc -c x.c -o x.o</tt>, you are causing <tt>gccas</tt> to be 
1386       run, which writes the <tt>x.o</tt> file (which is an LLVM bytecode file 
1387       that can be disassembled or manipulated just like any other bytecode 
1388       file).  The command line interface to <tt>gccas</tt> is designed to be 
1389       as close as possible to the <b>system</b> `<tt>as</tt>' utility so that 
1390       the gcc frontend itself did not have to be modified to interface to 
1391       a "weird" assembler.</dd>
1392
1393       <dt><tt><b>gccld</b></tt></dt>
1394       <dd><tt>gccld</tt> links together several LLVM bytecode files into one 
1395       bytecode file and does some optimization.  It is the linker invoked by 
1396       the GCC frontend when multiple .o files need to be linked together.  
1397       Like <tt>gccas</tt>, the command line interface of <tt>gccld</tt> is 
1398       designed to match the system linker, to aid interfacing with the GCC 
1399       frontend.</dd>
1400     </dl>
1401   </blockquote>
1402   </dd>
1403
1404   <dt><tt><b>opt</b></tt></dt>
1405   <dd><tt>opt</tt> reads LLVM bytecode, applies a series of LLVM to LLVM 
1406   transformations (which are specified on the command line), and then outputs 
1407   the resultant bytecode.  The '<tt>opt --help</tt>' command is a good way to 
1408   get a list of the program transformations available in LLVM.<br/>
1409   <dd><tt>opt</tt> can also be used to run a specific analysis on an input 
1410   LLVM bytecode file and print out the results.  It is primarily useful for 
1411   debugging analyses, or familiarizing yourself with what an analysis does.</dd>
1412 </dl>
1413 </div>
1414
1415 <!-- ======================================================================= -->
1416 <div class="doc_subsection"><a name="utils"><tt>llvm/utils</tt></a></div>
1417 <div class="doc_text">
1418
1419 <p>This directory contains utilities for working with LLVM source code, and some
1420 of the utilities are actually required as part of the build process because they
1421 are code generators for parts of LLVM infrastructure.</p>
1422
1423 <dl>
1424   <dt><tt><b>codegen-diff</b></tt> <dd><tt>codegen-diff</tt> is a script
1425   that finds differences between code that LLC generates and code that LLI
1426   generates. This is a useful tool if you are debugging one of them,
1427   assuming that the other generates correct output. For the full user
1428   manual, run <tt>`perldoc codegen-diff'</tt>.<br><br>
1429
1430   <dt><tt><b>cvsupdate</b></tt> <dd><tt>cvsupdate</tt> is a script that will
1431   update your CVS tree, but produce a much cleaner and more organized output
1432   than simply running <tt>`cvs -z3 up -dP'</tt> will. For example, it will group
1433   together all the new and updated files and modified files in separate
1434   sections, so you can see at a glance what has changed. If you are at the
1435   top of your LLVM CVS tree, running <tt>utils/cvsupdate</tt> is the
1436   preferred way of updating the tree.<br><br>
1437
1438   <dt><tt><b>emacs/</b></tt> <dd>The <tt>emacs</tt> directory contains
1439   syntax-highlighting files which will work with Emacs and XEmacs editors,
1440   providing syntax highlighting support for LLVM assembly files and TableGen
1441   description files. For information on how to use the syntax files, consult
1442   the <tt>README</tt> file in that directory.<br><br>
1443
1444   <dt><tt><b>getsrcs.sh</b></tt> <dd>The <tt>getsrcs.sh</tt> script finds
1445   and outputs all non-generated source files, which is useful if one wishes
1446   to do a lot of development across directories and does not want to
1447   individually find each file. One way to use it is to run, for example:
1448   <tt>xemacs `utils/getsources.sh`</tt> from the top of your LLVM source
1449   tree.<br><br>
1450
1451   <dt><tt><b>llvmgrep</b></tt></dt>
1452   <dd>This little tool performs an "egrep -H -n" on each source file in LLVM and
1453   passes to it a regular expression provided on <tt>llvmgrep</tt>'s command
1454   line. This is a very efficient way of searching the source base for a
1455   particular regular expression.</dd>
1456
1457   <dt><tt><b>makellvm</b></tt> <dd>The <tt>makellvm</tt> script compiles all
1458   files in the current directory and then compiles and links the tool that
1459   is the first argument. For example, assuming you are in the directory
1460   <tt>llvm/lib/Target/Sparc</tt>, if <tt>makellvm</tt> is in your path,
1461   simply running <tt>makellvm llc</tt> will make a build of the current
1462   directory, switch to directory <tt>llvm/tools/llc</tt> and build it,
1463   causing a re-linking of LLC.<br><br>
1464
1465   <dt><tt><b>NightlyTest.pl</b></tt> and
1466   <tt><b>NightlyTestTemplate.html</b></tt> <dd>These files are used in a
1467   cron script to generate nightly status reports of the functionality of
1468   tools, and the results can be seen by following the appropriate link on
1469   the <a href="http://llvm.org/">LLVM homepage</a>.<br><br>
1470
1471   <dt><tt><b>TableGen/</b></tt> <dd>The <tt>TableGen</tt> directory contains
1472   the tool used to generate register descriptions, instruction set
1473   descriptions, and even assemblers from common TableGen description
1474   files.<br><br>
1475
1476   <dt><tt><b>vim/</b></tt> <dd>The <tt>vim</tt> directory contains
1477   syntax-highlighting files which will work with the VIM editor, providing
1478   syntax highlighting support for LLVM assembly files and TableGen
1479   description files. For information on how to use the syntax files, consult
1480   the <tt>README</tt> file in that directory.<br><br>
1481
1482 </dl>
1483
1484 </div>
1485
1486 <!-- ======================================================================= -->
1487 <div class="doc_subsection"><a name="win32"><tt>llvm/win32</tt></a></div>
1488 <div class="doc_text">
1489   <p>This directory contains build scripts and project files for use with 
1490   Visual C++. This allows developers on Windows to build LLVM without the need
1491   for Cygwin. The contents of this directory should be considered experimental
1492   at this time.
1493   </p>
1494 </div>
1495 <!-- *********************************************************************** -->
1496 <div class="doc_section">
1497   <a name="tutorial">An Example Using the LLVM Tool Chain</a>
1498 </div>
1499 <!-- *********************************************************************** -->
1500
1501 <div class="doc_text">
1502 <p>This section gives an example of using LLVM.  Since we are currently 
1503 transitioning from llvm-gcc3 to llvm-gcc4, we include examples for both.
1504 </p>
1505
1506 <p><b>Note:</b> The <i>gcc4</i> frontend's invocation is <b><i>considerably different</i></b>
1507 from the previous <i>gcc3</i> frontend. In particular, the <i>gcc4</i> frontend <b><i>does not</i></b>
1508 create bytecode by default: <i>gcc4</i> produces native code. As the example below illustrates,
1509 the '--emit-llvm' flag is needed to produce LLVM bytecode output. For <i>makefiles</i> and
1510 <i>configure</i> scripts, the CFLAGS variable needs '--emit-llvm' to produce bytecode
1511 output.</p>
1512 </div>
1513
1514 <!-- ======================================================================= -->
1515 <div class="doc_subsection"><a name="tutorial4">Example with llvm-gcc4</a></div>
1516
1517 <div class="doc_text">
1518
1519 <ol>
1520   <li>First, create a simple C file, name it 'hello.c':
1521        <pre>
1522    #include &lt;stdio.h&gt;
1523    int main() {
1524      printf("hello world\n");
1525      return 0;
1526    }
1527        </pre></li>
1528
1529   <li><p>Next, compile the C file into a native executable:</p>
1530
1531       <p><tt>% llvm-gcc hello.c -o hello</tt></p>
1532
1533       <p>Note that llvm-gcc works just like GCC by default.  The standard -S and
1534         -c arguments work as usual (producing a native .s or .o file,
1535         respectively). </p>
1536
1537   <li><p>Next, compile the C file into a LLVM bytecode file:</p>
1538       <p><tt>% llvm-gcc -O3 -emit-llvm hello.c -c -o hello.bc</tt></p>
1539
1540       <p>The -emit-llvm option can be used with the -S or -c options to emit an
1541          LLVM ".ll" or ".bc" file (respectively) for the code.  This allows you
1542          to use the <a href="CommandGuide/index.html">standard LLVM tools</a> on
1543          the bytecode file.</p>
1544
1545       <p>Unlike llvm-gcc3, llvm-gcc4 correctly responds to -O[0123] arguments.
1546          </p></li>
1547
1548   <li><p>Run the program in both forms. To run the program, use:</p>
1549       
1550       <p><tt>% ./hello</tt></p>
1551  
1552       <p>and</p>
1553
1554       <p><tt>% lli hello.bc</tt></p>
1555
1556       <p>The second examples shows how to invoke the LLVM JIT, <a
1557        href="CommandGuide/html/lli.html">lli</a>.</p></li>
1558
1559   <li><p>Use the <tt>llvm-dis</tt> utility to take a look at the LLVM assembly
1560       code:</p>
1561
1562       <p><tt>% llvm-dis &lt; hello.bc | less</tt><br><br></li>
1563
1564   <li><p>Compile the program to native assembly using the LLC code
1565       generator:</p>
1566
1567       <p><tt>% llc hello.bc -o hello.s</tt></p>
1568
1569   <li><p>Assemble the native assembly language file into a program:</p>
1570
1571       <p><b>Solaris:</b><tt>% /opt/SUNWspro/bin/cc -xarch=v9 hello.s -o hello.native</tt></p>
1572       <p><b>Others:</b><tt>% gcc hello.s -o hello.native</tt></p>
1573
1574   <li><p>Execute the native code program:</p>
1575
1576       <p><tt>% ./hello.native</tt></p>
1577
1578       <p>Note that using llvm-gcc to compile directly to native code (i.e. when
1579          the -emit-llvm option is not present) does steps 6/7/8 for you.</p>
1580         </li>
1581
1582 </ol>
1583
1584 </div>
1585
1586 <!-- ======================================================================= -->
1587 <div class="doc_subsection"><a name="tutorial3">Example with llvm-gcc3</a></div>
1588
1589 <div class="doc_text">
1590
1591 <ol>
1592   <li>First, create a simple C file, name it 'hello.c':
1593        <pre>
1594    #include &lt;stdio.h&gt;
1595    int main() {
1596      printf("hello world\n");
1597      return 0;
1598    }
1599        </pre></li>
1600
1601   <li><p>Next, compile the C file into a LLVM bytecode file:</p>
1602       <p><tt>% llvm-gcc hello.c -o hello</tt></p>
1603
1604       <p>Note that you should have already built the tools and they have to be
1605       in your path, at least <tt>gccas</tt> and <tt>gccld</tt>.</p>
1606
1607       <p>This will create two result files: <tt>hello</tt> and
1608       <tt>hello.bc</tt>. The <tt>hello.bc</tt> is the LLVM bytecode that
1609       corresponds the the compiled program and the library facilities that it
1610       required.  <tt>hello</tt> is a simple shell script that runs the bytecode
1611       file with <tt>lli</tt>, making the result directly executable.  Note that
1612       all LLVM optimizations are enabled by default, so there is no need for a 
1613       "-O3" switch.</p></li>
1614
1615   <li><p>Run the program. To make sure the program ran, execute one of the
1616       following commands:</p>
1617
1618       <p><tt>% ./hello</tt></p>
1619
1620       <p>or</p>
1621
1622       <p><tt>% lli hello.bc</tt></p></li>
1623
1624   <li><p>Use the <tt>llvm-dis</tt> utility to take a look at the LLVM assembly
1625       code:</p>
1626
1627       <p><tt>% llvm-dis &lt; hello.bc | less</tt><br><br></li>
1628
1629   <li><p>Compile the program to native assembly using the LLC code
1630       generator:</p>
1631
1632       <p><tt>% llc hello.bc -o hello.s</tt></p>
1633
1634   <li><p>Assemble the native assembly language file into a program:</p>
1635
1636       <p><b>Solaris:</b><tt>% /opt/SUNWspro/bin/cc -xarch=v9 hello.s -o hello.native</tt></p>
1637       <p><b>Others:</b><tt>% gcc hello.s -o hello.native</tt></p>
1638
1639   <li><p>Execute the native code program:</p>
1640
1641       <p><tt>% ./hello.native</tt></p></li>
1642
1643 </ol>
1644
1645 </div>
1646
1647 <!-- *********************************************************************** -->
1648 <div class="doc_section">
1649   <a name="problems">Common Problems</a>
1650 </div>
1651 <!-- *********************************************************************** -->
1652
1653 <div class="doc_text">
1654
1655 <p>If you are having problems building or using LLVM, or if you have any other
1656 general questions about LLVM, please consult the <a href="FAQ.html">Frequently
1657 Asked Questions</a> page.</p>
1658
1659 </div>
1660
1661 <!-- *********************************************************************** -->
1662 <div class="doc_section">
1663   <a name="links">Links</a>
1664 </div>
1665 <!-- *********************************************************************** -->
1666
1667 <div class="doc_text">
1668
1669 <p>This document is just an <b>introduction</b> to how to use LLVM to do
1670 some simple things... there are many more interesting and complicated things
1671 that you can do that aren't documented here (but we'll gladly accept a patch
1672 if you want to write something up!).  For more information about LLVM, check
1673 out:</p>
1674
1675 <ul>
1676   <li><a href="http://llvm.org/">LLVM homepage</a></li>
1677   <li><a href="http://llvm.org/doxygen/">LLVM doxygen tree</a></li>
1678   <li><a href="http://llvm.org/docs/Projects.html">Starting a Project
1679   that Uses LLVM</a></li>
1680 </ul>
1681
1682 </div>
1683
1684 <!-- *********************************************************************** -->
1685
1686 <hr>
1687 <address>
1688   <a href="http://jigsaw.w3.org/css-validator/check/referer"><img
1689   src="http://jigsaw.w3.org/css-validator/images/vcss" alt="Valid CSS!"></a>
1690   <a href="http://validator.w3.org/check/referer"><img
1691   src="http://www.w3.org/Icons/valid-html401" alt="Valid HTML 4.01!" /></a>
1692
1693   <a href="mailto:sabre@nondot.org">Chris Lattner</a><br>
1694   <a href="http://llvm.x10sys.com/rspencer/">Reid Spencer</a><br>
1695   <a href="http://llvm.org">The LLVM Compiler Infrastructure</a><br>
1696   Last modified: $Date$
1697 </address>
1698 </body>
1699 </html>