<li><a href="#install-instructions">Installation Instructions</a></li>
<li><a href="#knownproblems">Known Problems</a>
<ul>
+ <li><a href="#experimental">Experimental features included with this release</a>
<li><a href="#core">Known problems with the LLVM Core</a>
<li><a href="#c-fe">Known problems with the C Front-end</a>
<li><a href="#c++-fe">Known problems with the C++ Front-end</a>
<ol>
<li><a href="SourceLevelDebugging.html">A new LLVM source-level debugger has been started.</a></li>
<li>LLVM 1.2 encodes bytecode files for large programs in 10-30% less space.</li>
-<li>LLVM can now feed profile information back into optimizers for Profile Guided Optimization, and includes a simple basic block reordering pass.</li>
+<li>LLVM can now feed profile information back into optimizers for Profile Guided Optimization, includes a simple basic block reordering pass, and supports edge profiling as well as function and block-level profiling.</li>
<li>The LLVM JIT lazily initializes global variables, reducing startup time for programs with lots of globals (like C++ programs).</li>
<li>The build and installation infrastructure in this release is dramatically
href="http://llvm.cs.uiuc.edu/PR203">RPM package generation</a>.</li>
<li>The "tblgen" tool is <a href="TableGenFundamentals.html">now documented</a>.</li>
-<li>The LLVM code generator got a multitude of improvements:
+<li>The target-independent code generator got several improvements:
<ul>
-<li>It can now fold spill code into instructions on targets that support it.</li>
-<li>A generic machine code spiller/rewriter was added. It provides an API for
-global register allocators to eliminate virtual registers and add the
-appropriate spill code.</li>
-<li>The represenation of machine basic blocks got cleaned up and improved to
-allow easier development and more efficient implementation.</li>
+ <li>It can now fold spill code into instructions (on targets that support it).</li>
+ <li>A generic machine code spiller/rewriter was added. It provides an API for
+ global register allocators to eliminate virtual registers and add the
+ appropriate spill code.</li>
+ <li>The represenation of machine code basic blocks is more efficient and has
+ an easier to use interface.</li>
</ul>
</li>
<li><a href="http://llvm.cs.uiuc.edu/PR253">LLVM now no longer depends on the boost library</a>.</li>
tool. You can activate it with "<tt>llc -march=c foo.bc -o foo.c</tt>".</li>
<li>LLVM includes a new interprocedural optimization that marks global variables
"constant" when they are provably never written to.</li>
+<li>LLVM now includes a new interprocedural optimization that converts small "by reference" arguments to "by value" arguments, which is often improve the performance of C++ programs substantially.</li>
</ol>
<li><a href="http://llvm.cs.uiuc.edu/PR205">[llvmgcc] C front-end does not emit 'zeroinitializer' when possible</a></li>
<li><a href="http://llvm.cs.uiuc.edu/PR233">[llvmgcc] Structure copies result in a LOT of code</a></li>
<li><a href="http://llvm.cs.uiuc.edu/PR239">LLVM is now much more memory efficient when handling large zero initialized arrays</a></li>
+<li><a href="http://llvm.cs.uiuc.edu/PR275">[llvmgcc] Local array initializers are expanded into large amounts of code</a></li>
</ol>
<!--=========================================================================-->
<li><a href="http://llvm.cs.uiuc.edu/PR245">Linking weak and strong global variables is dependent on link order</a></li>
<li><a href="http://llvm.cs.uiuc.edu/PR258">Variables used to define non-printable FP constants are externally visible</a></li>
<li><a href="http://llvm.cs.uiuc.edu/PR259">CBE gives linkonce functions wrong linkage semantics</a></li>
+<li><a href="http://llvm.cs.uiuc.edu/PR274">[JIT] Programs cannot resolve the fstat function</a></li>
+<li><a href="http://llvm.cs.uiuc.edu/PR284">[indvars] Induction variable analysis violates LLVM invariants</a></li>
</ol>
</div>
-<!-- _______________________________________________________________________ -->
-<!--
-</ul><h4><a name="portability"><hr size=0>Portability Problems</h4><ul>
--->
+<!-- ======================================================================= -->
+<div class="doc_subsection">
+ <a name="experimental">Experimental features included with this release</a>
+</div>
+
+<div class="doc_text">
+
+<p>
+The following components of this LLVM release are either untested, known to be
+broken or unreliable, or are in early development. These components should not
+be relied on, and bugs should not be filed against them, but they may be useful
+to some people. In particular, if you would like to work on one of these
+components, please contact us on the llvmdev list.
+</p>
+
+<ul>
+<li>The following passes are incomplete or buggy: <tt>-pgmdep, -memdep,
+ -ipmodref, -sortstructs, -swapstructs, -cee</tt></li>
+<li>The <tt>-pre</tt> pass is incomplete (there are cases it doesn't handle that
+ it should) and not thoroughly tested.</li>
+<li>The <tt>llvm-ar</tt> tool is incomplete and probably buggy.</li>
+<li>The <tt>llvm-db</tt> tool is in a very early stage of development.</li>
+</ul>
+
+</div>
<!-- ======================================================================= -->
<div class="doc_subsection">
<li>The gccld program <a href="http://llvm.cs.uiuc.edu/PR139">does not link objects/archives in the order specified on the command line.</a></li>
<li><a href="http://llvm.cs.uiuc.edu/PR240">The lower-invoke pass does not mark
-values live across a setjmp as volatile</a>. This missing feature only effects
+values live across a setjmp as volatile</a>. This missing feature only affects
targets whose setjmp/longjmp libraries do not save and restore the entire
register file.</li>
</ul>