Fix PR3667
[oota-llvm.git] / docs / ReleaseNotes.html
index d7f1c47dc0e9541f4184c7e968a3e5433756327f..ce3aa4e0ed3725ef1c853ab77ea780983f817ea7 100644 (file)
@@ -54,15 +54,17 @@ current one.  To see the release notes for a specific release, please see the
 <!-- Unfinished features in 2.5:
   Machine LICM
   Machine Sinking
-  LegalizeDAGTypes
+  target-specific intrinsics
+  gold lto plugin
+  pre-alloc splitter, strong phi elim
   llc -enable-value-prop, propagation of value info (sign/zero ext info) from
        one MBB to another
+  debug info for optimized code
+  
  -->
 
  <!-- for announcement email:
-    mention dev mtg
-    Xcode 3.1 and 3.1.1.
-  -->
+   -->
 
 <!-- *********************************************************************** -->
 <div class="doc_section">
@@ -92,39 +94,32 @@ the <a href="#vmkit">VMKit Project</a>.
 
 <p>The <a href="http://clang.llvm.org/">Clang project</a> is an effort to build
 a set of new 'LLVM native' front-end technologies for the LLVM optimizer
-and code generator.  Clang is continuing to make major strides forward in all
-areas.  Its C and Objective-C parsing support is very solid, and the code
-generation support is far enough along to build many C applications.  While not
-yet production quality, it is progressing very nicely.  In addition, C++
-front-end work has started to make significant progress.</p>
-
-<p>Clang, in conjunction with the <tt>ccc</tt> driver, is now usable as a
-replacement for gcc for building some small- to medium-sized C applications.
-Additionally, Clang now has code generation support for Objective-C on Mac OS X
-platform. Major highlights include:</p>
-
-<ul>
-       <li> Clang/ccc pass almost all of the LLVM test suite on Mac OS X and Linux 
-on the 32-bit x86 architecture. This includes significant C 
-applications such as <a href="http://www.sqlite.org">sqlite3</a>, 
-<a href="http://www.lua.org">lua</a>, and 
-<a href="http://www.clamav.net">Clam AntiVirus</a>. </li>
-
-       <li> Clang can build the majority of Objective-C examples shipped with the 
-Mac OS X Developer Tools. </li>
-</ul>
-
-<p>Clang code generation still needs considerable testing and development,
-however.  Some areas under active development include:</p>
+and code generator.  While Clang is not included in the LLVM 2.5 release, it 
+is continuing to make major strides forward in all areas.  Its C and Objective-C
+parsing and code generation support is now very solid.  For example, it is
+capable of successfully building many real applications for X86-32 and X86-64,
+including the FreeBSD kernel.  C++ is also making <a
+href="http://clang.llvm.org/cxx_status.html">incredible progress</a>, and work
+on templates has recently started.</p>
+
+<p>While Clang is not yet production quality, it is progressing very nicely and
+is quite usable for building many C and Objective-C applications.  If you are
+interested in fast compiles and good diagnostics, we encourage you to try it out
+by <a href="http://clang.llvm.org/get_started.html">building from mainline</a>
+and reporting any issues you hit to the <a 
+href="http://lists.cs.uiuc.edu/mailman/listinfo/cfe-dev">Clang front-end mailing
+list</a>.</p>
+
+<p>In the LLVM 2.5 time-frame, the Clang team has made many improvements:</p>
 
 <ul>
-       <li> Improved support for C and Objective-C features, for example
-       variable-length arrays, va_arg, exception handling (Obj-C), and garbage
-       collection (Obj-C). </li>
-       <li> ABI compatibility, especially for platforms other than 32-bit
-       x86. </li>
-</ul>
-
+<li>Clang now has a new driver, which is focused on providing a GCC-compatible
+    interface.</li> 
+<li>The X86-64 ABI is now supported.</li> 
+<li>Precompiled header support is now implemented.</li> 
+<li>Objective-C support is significantly improved beyond LLVM 2.4, supporting
+    many features, such as Objective-C Garbage Collection.</li>
+<li>Many many bugs are fixed.</li>
 </div>
 
 <!--=========================================================================-->
@@ -170,7 +165,7 @@ The <a href="http://vmkit.llvm.org/">VMKit project</a> is an implementation of
 a JVM and a CLI Virtual Machines (Microsoft .NET is an
 implementation of the CLI) using the Just-In-Time compiler of LLVM.</p>
 
-<p>Following LLVM 2.5, VMKit has its first release 0.24 that you can find on its
+<p>Following LLVM 2.5, VMKit has its first release ? that you can find on its
 <a href="http://vmkit.llvm.org/releases/">webpage</a>. The release includes
 bug fixes, cleanup and new features. The major changes are:</p>
 
@@ -206,7 +201,42 @@ in this section.
 <p>LLVM 2.5 includes several major new capabilities:</p>
 
 <ul>
-<li><p>?</p></li>
+<li><p>The code generator now supports arbitrary precision integers.
+Types like <tt>i33</tt> have long been valid in the LLVM IR, but previously
+could only be used with the interpreter.
+Now IR using such types can be compiled to native code on all targets.
+All operations are supported if the integer is not bigger than twice the
+target machine word size.
+Simple operations like loads, stores and shifts by a constant amount are
+supported for integers of any size.
+</p></li>
+
+<!--
+Random stuff:
+
+xcore backend!
+fortran on darwin!
+
+.ll parser rewrite.
+GCC inliner off.
+cmake mature?
+x86 backend FS/GS segment address spaces?
+nocapture
+memdep is faster / more aggressive.
+how to write a backend doc docs/WritingAnLLVMBackend.html
+fastisel + exception handling
+vector widening <3 x float> -> <4 x float>
+arm port improvements? arm jit encoding stuff, constant island support?
+JIT TLS support on x86
+mem2reg now faster on code with huge basic blocks
+stack protectors/stack canaries, -fstack-protector, controllable on a 
+  per-function basis with attributes.
+shufflevector is generalized to allow different shuffle mask width than its
+  input vectors.
+loop optimizer improves floating point induction variables
+llvm/Analysis/DebugInfo.h classes, llvm-gcc and clang and codegen use them.
+asmprinters seperate from targets for jits
+-->
 
 </ul>
 
@@ -276,6 +306,15 @@ which allows us to implement more aggressive algorithms and make it run
 faster:</p>
 
 <ul>
+<li>The type legalization logic has been completely rewritten, and is now
+more powerful (it supports arbitrary precision integer types for example)
+and hopefully more correct.
+The type legalizer converts operations on types that are not natively
+supported by the target machine into equivalent code sequences that only use
+natively supported types.
+The old type legalizer is still available and will be used if
+<tt>-disable-legalize-types</tt> is passed to <tt>llc</tt>.
+</li>
 <li>?</li>
 
 </ul>
@@ -546,6 +585,7 @@ appropriate nops inserted to ensure restartability.</li>
     C++ programs</a>, preventing intermixing between C++ compiled by the CBE and
     C++ code compiled with llc or native compilers.</li>
 <li>The C backend does not support all exception handling constructs.</li>
+<li>The C backend does not support arbitrary precision integers.</li>
 </ul>
 
 </div>
@@ -620,10 +660,14 @@ to lack of trampoline support (pointers to nested functions) on other platforms,
 however it <a href="http://llvm.org/PR2006">also fails to build on X86-64</a>
 which does support trampolines.</li>
 <li>The Ada front-end <a href="http://llvm.org/PR2007">fails to bootstrap</a>.
+This is due to lack of LLVM support for <tt>setjmp</tt>/<tt>longjmp</tt> style
+exception handling, which is used internally by the compiler.
 Workaround: configure with --disable-bootstrap.</li>
 <li>The c380004, <a href="http://llvm.org/PR2010">c393010</a>
 and <a href="http://llvm.org/PR2421">cxg2021</a> ACATS tests fail
-(c380004 also fails with gcc-4.2 mainline).</li>
+(c380004 also fails with gcc-4.2 mainline).
+If the compiler is built with checks disabled then <a href="http://llvm.org/PR2010">c393010</a>
+causes the compiler to go into an infinite loop, using up all system memory.</li>
 <li>Some gcc specific Ada tests continue to crash the compiler.</li>
 <li>The -E binder option (exception backtraces)
 <a href="http://llvm.org/PR1982">does not work</a> and will result in programs