<!-- *********************************************************************** -->
This document contains the release notes for the LLVM compiler infrastructure,
-release 1.0. The most up-to-date version of this document can be found on the
-<a href="http://llvm.cs.uiuc.edu/releases/1.0/ReleaseNotes.html">LLVM web
-site</a>. If you are not reading this on the LLVM web pages, you should
-probably go there, because this document may be updated after the release.<p>
+release 1.0. Here we describe how to install LLVM, as well as any known
+problems. The most up-to-date version of this document can be found on the <a
+href="http://llvm.cs.uiuc.edu/releases/1.0/">LLVM 1.0 web site</a>. If you are
+not reading this on the LLVM web pages, you should probably go there, because
+this document may be updated after the release.<p>
-FIXME: What is this document? Where do I find other documents?<p>
+For more information about LLVM, including information about potentially more
+current releases, please check out the <a href="http://llvm.cs.uiuc.edu">main
+web site</a>. If you have questions or comments, the <a
+href="http://mail.cs.uiuc.edu/mailman/listinfo/llvmdev">LLVM developer's mailing
+list</a> is a good place to send them.<p>
<!-- *********************************************************************** -->
compiler, a C back-end, stable X86 and Sparc V9 static and JIT code generators,
as well as a large suite of scalar and interprocedural optimizations.<p>
+The default optimizer sequence used by the C/C++ front-ends is:<p>
+
+<ol>
+<li>Interprocedural dead code elimination (-globaldce)
+<li>Exception handling pruning (-prune-eh)
+<li>Function inlining (-inline)
+<li>Instruction combining (-instcombine)
+<li>Cast elimination (-raise)
+<li>Tail duplication (-tailduplicate)
+<li>CFG simplification (-simplifycfg)
+<li>Scalar replacement of aggregates (-scalarrepl)
+<li>Tail call elimination (-tailcallelim)
+<li>Instruction combining (-instcombine)
+<li>Reassociation (-reassociate)
+<li>Instruction combining (-instcombine)
+<li>CFG simplification (-simplifycfg)
+<li>Loop canonicalization (-loopsimplify)
+<li>Loop invariant code motion, with scalar promotion (-licm)
+<li>Global common subexpression elimination, with load elimination (-gcse)
+<li>Sparse conditional constant propagation (-sccp)
+<li>Instruction combining (-instcombine)
+<li>Induction variable canonicalization (-indvars)
+<li>Aggressive dead code elimination (-adce)
+<li>CFG simplication (-simplifycfg)
+<li>Dead type elimination (-deadtypeelim)
+<li>Global constant merging (-constmerge)
+</ol><p>
+
+At link-time, the following optimizations are run:<p>
+
+<ol>
+<li>Global constant merging (-constmerge)
+<li>[optional] Internalization [which marks most functions and global variables static] (-internalize)
+<li>Interprocedural dead argument elimination (-deadargelim)
+<li>Instruction combining (-instcombine)
+<li>CFG simplification (-simplifycfg)
+<li>Interprocedural dead code elimination (-globaldce)
+</ol><p>
+
+
TODO: Works on: SPEC CPU 2000<p>
TODO: Works on: Olden/Ptrdist benchmarks<p>
- These functions have not been tested.
</ol><p>
+<li>Bugs:<br>
+ <a href="http://llvm.cs.uiuc.edu/PR6">Oversized integer bitfields cause crash</a>.<br>
+ <a href="http://llvm.cs.uiuc.edu/PR9">LLVM needs explicit support for weak variables</a>.<br>
+<p>
+
<li>Although many GCC extensions are supported, some are not. In particular,
the following extensions are known to <b>not be</b> supported:
<ol>
different from the model used in the Itanium ABI, so <b>exceptions will not
interact correctly</b> .
+<li><a href="http://llvm.cs.uiuc.edu/PR11">Code for executing
+destructors when unwinding is not shared</a>.
+
+
<!-- _______________________________________________________________________ -->
</ul><h4><a name="x86-be"><hr size=0>Known problems with the X86 back-end</h4><ul>
-<li>The X86 code generator does not currently support the <tt>unwind</tt>
-instruction, so code that throws a C++ exception or calls the C <tt>longjmp</tt>
-function will abort.<p>
+<li>The X86 code generator <a
+href="http://llvm.cs.uiuc.edu/PR16">does not currently
+support the <tt>unwind</tt> instruction</a>, so code that throws a C++ exception
+or calls the C <tt>longjmp</tt> function will abort.<p>
-<li>Some executables produced by LLC seem to intermittently crash (extremely
-infrequently). The cause of the problem has not been diagnosed, and does not
-affect the JIT.<p>
+<li><a href="http://llvm.cs.uiuc.edu/PR4">Some executables
+produced by LLC seem to intermittently crash (extremely infrequently)</a>. The
+cause of the problem has not been diagnosed, and does not affect the JIT.<p>
<!-- _______________________________________________________________________ -->
</ul><h4><a name="sparc-be"><hr size=0>Known problems with the Sparc back-end</h4><ul>
-<li>The Sparc code generator does not currently support the <tt>invoke</tt> or
-<tt>unwind</tt> instructions, so code produced by the C++ front-end and C code
-that calls the <tt>setjmp</tt> or <tt>longjmp</tt> functions will not compile.
+<li>The Sparc code generator <a
+href="http://llvm.cs.uiuc.edu/PR15">does not currently
+support the <tt>unwind</tt> instruction</a>, so code that throws a C++ exception
+or calls the C <tt>longjmp</tt> function will abort.<p>
<!-- _______________________________________________________________________ -->
<hr><font size-1>
-<address>By: <a href="mailto:sabre@nondot.org">Chris Lattner</a></address>
+Maintained By: <a href="http://llvm.cs.uiuc.edu/">The LLVM Team</a><br>
<!-- Created: Wed Oct 1 17:38:54 CDT 2003 -->
<!-- hhmts start -->
-Last modified: Thu Oct 2 11:37:25 CDT 2003
+Last modified: Sun Oct 12 16:51:06 CDT 2003
<!-- hhmts end -->
</body></html>