Document stuff that is known to be broken
[oota-llvm.git] / docs / ReleaseNotes.html
index 4f387af562a773406eebc4103f63b197636a231f..19e6ca34ea9b8c10e170a241dbed2bcd030f6549 100644 (file)
@@ -18,6 +18,7 @@
   <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>
@@ -96,7 +97,7 @@ received less testing than the C front-end.
 <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
@@ -109,14 +110,14 @@ href="http://llvm.cs.uiuc.edu/PR220">install</a>" and <a
 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>
@@ -125,6 +126,7 @@ allow easier development and more efficient implementation.</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>
 
 
@@ -158,6 +160,7 @@ In this release, the following missing features were implemented:
 <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>
 
 <!--=========================================================================-->
@@ -215,6 +218,8 @@ cause use of invalid pointers!</a></li>
 <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>
 
 
@@ -272,11 +277,32 @@ there isn't already one.</p>
 
 </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">
@@ -305,7 +331,7 @@ more than 256 elements</a>.</li>
 <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>