[llvm-commits] [llvm] r74070 - /llvm/trunk/docs/ReleaseNotes-2.6.html

Duncan Sands baldrick at free.fr
Wed Jun 24 01:38:48 PDT 2009


Author: baldrick
Date: Wed Jun 24 03:38:48 2009
New Revision: 74070

URL: http://llvm.org/viewvc/llvm-project?rev=74070&view=rev
Log:
Start sketching 2.6 release notes.  This provides a
place to note major API changes (I've noted the
getABITypeSize -> getAllocSize change).

Added:
    llvm/trunk/docs/ReleaseNotes-2.6.html
      - copied, changed from r74068, llvm/trunk/docs/ReleaseNotes.html

Copied: llvm/trunk/docs/ReleaseNotes-2.6.html (from r74068, llvm/trunk/docs/ReleaseNotes.html)
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/docs/ReleaseNotes-2.6.html?p2=llvm/trunk/docs/ReleaseNotes-2.6.html&p1=llvm/trunk/docs/ReleaseNotes.html&r1=74068&r2=74070&rev=74070&view=diff

==============================================================================
--- llvm/trunk/docs/ReleaseNotes.html (original)
+++ llvm/trunk/docs/ReleaseNotes-2.6.html Wed Jun 24 03:38:48 2009
@@ -4,17 +4,17 @@
 <head>
   <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
   <link rel="stylesheet" href="llvm.css" type="text/css">
-  <title>LLVM 2.5 Release Notes</title>
+  <title>LLVM 2.6 Release Notes</title>
 </head>
 <body>
 
-<div class="doc_title">LLVM 2.5 Release Notes</div>
+<div class="doc_title">LLVM 2.6 Release Notes</div>
 
 <ol>
   <li><a href="#intro">Introduction</a></li>
   <li><a href="#subproj">Sub-project Status Update</a></li>
-  <li><a href="#externalproj">External Projects Using LLVM 2.5</a></li>
-  <li><a href="#whatsnew">What's New in LLVM 2.5?</a></li>
+  <li><a href="#externalproj">External Projects Using LLVM 2.6</a></li>
+  <li><a href="#whatsnew">What's New in LLVM 2.6?</a></li>
   <li><a href="GettingStarted.html">Installation Instructions</a></li>
   <li><a href="#portability">Portability and Supported Platforms</a></li>
   <li><a href="#knownproblems">Known Problems</a></li>
@@ -34,7 +34,7 @@
 <div class="doc_text">
 
 <p>This document contains the release notes for the LLVM Compiler
-Infrastructure, release 2.5.  Here we describe the status of LLVM, including
+Infrastructure, release 2.6.  Here we describe the status of LLVM, including
 major improvements from the previous release and significant known problems.
 All LLVM releases may be downloaded from the <a
 href="http://llvm.org/releases/">LLVM releases web site</a>.</p>
@@ -80,7 +80,7 @@
 
 <div class="doc_text">
 <p>
-The LLVM 2.5 distribution currently consists of code from the core LLVM
+The LLVM 2.6 distribution currently consists of code from the core LLVM
 repository —which roughly includes the LLVM optimizers, code generators
 and supporting tools — and the llvm-gcc repository.  In addition to this
 code, the LLVM Project includes other sub-projects that are in development.  The
@@ -100,7 +100,7 @@
 
 <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.  While Clang is not included in the LLVM 2.5 release, it is
+code generator.  While Clang is not included in the LLVM 2.6 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-world applications for X86-32
@@ -115,20 +115,10 @@
 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>
+<p>In the LLVM 2.6 time-frame, the Clang team has made many improvements:</p>
 
 <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, including support for the Apple
-    64-bit Objective-C runtime and zero cost exception handling.</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>Variable length arrays are now fully supported.</li>
-<li>C99 designated initializers are now fully supported.</li>
-<li>Clang now includes all major compiler headers, including a
-    redesigned <i>tgmath.h</i> and several more intrinsic headers.</li>
+<li>Something wonderful!</li>
 <li>Many many bugs are fixed and many features have been added.</li>
 </ul>
 </div>
@@ -140,19 +130,14 @@
 
 <div class="doc_text">
 
-<p>Previously announced in the last LLVM release, the Clang project also
+<p>Previously announced in the 2.4 LLVM release, the Clang project also
 includes an early stage static source code analysis tool for <a
 href="http://clang.llvm.org/StaticAnalysis.html">automatically finding bugs</a>
 in C and Objective-C programs. The tool performs a growing set of checks to find
 bugs that occur on a specific path within a program.</p>
 
-<p>In the LLVM 2.5 time-frame there have been many significant improvements to
-the analyzer's core path simulation engine and machinery for generating
-path-based bug reports to end-users. Particularly noteworthy improvements
-include experimental support for full field-sensitivity and reasoning about heap
-objects as well as an improved value-constraints subengine that does a much
-better job of reasoning about inequality relationships (e.g., <tt>x > 2</tt>)
-between variables and constants.
+<p>In the LLVM 2.6 time-frame there have been many significant improvements to
+XYZ.</p>
 
 <p>The set of checks performed by the static analyzer continues to expand, and
 future plans for the tool include full source-level inter-procedural analysis
@@ -173,38 +158,20 @@
 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 second release that you can find on its
+<p>Following LLVM 2.6, VMKit has its XYZ 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>
 
 <ul>
 
-<li>Ahead of Time compiler: compiles .class files to llvm .bc. VMKit uses this
-functionality to native compile the standard classes (e.g. java.lang.String).
-Users can compile AoT .class files into dynamic libraries and run them with the
-help of VMKit.</li>
-
-<li>New exception model: the dwarf exception model is very slow for
-exception-intensive applications, so the JVM has had a new implementation of
-exceptions which check at each function call if an exception happened. There is
-a low performance penalty on applications without exceptions, but it is a big
-gain for exception-intensive applications. For example the jack benchmark in
-Spec JVM98 is 6x faster (performance gain of 83%).</li>
-
-<li>User-level management of thread stacks, so that thread local data access
-at runtime is fast and portable. </li>
-
-<li>Implementation of biased locking for faster object synchronizations at
-runtime.</li>
-
-<li>New support for OSX/X64, Linux/X64 (with the Boehm GC) and Linux/ppc32.</li>
+<li>Something wonderful!</li>
 
 </ul>
 </div>
 
 <!-- *********************************************************************** -->
 <div class="doc_section">
-  <a name="externalproj">External Projects Using LLVM 2.5</a>
+  <a name="externalproj">External Projects Using LLVM 2.6</a>
 </div>
 <!-- *********************************************************************** -->
 
@@ -243,7 +210,7 @@
 <p>
 <a href="http://www.dsource.org/projects/ldc">LDC</a> is an implementation of
 the D Programming Language using the LLVM optimizer and code generator.
-The LDC project works great with the LLVM 2.5 release.  General improvements in
+The LDC project works great with the LLVM 2.6 release.  General improvements in
 this
 cycle have included new inline asm constraint handling, better debug info
 support, general bugfixes, and better x86-64 support.  This has allowed
@@ -267,7 +234,7 @@
 
 <!-- *********************************************************************** -->
 <div class="doc_section">
-  <a name="whatsnew">What's New in LLVM 2.5?</a>
+  <a name="whatsnew">What's New in LLVM 2.6?</a>
 </div>
 <!-- *********************************************************************** -->
 
@@ -286,28 +253,10 @@
 
 <div class="doc_text">
 
-<p>LLVM 2.5 includes several major new capabilities:</p>
+<p>LLVM 2.6 includes several major new capabilities:</p>
 
 <ul>
-<li>LLVM 2.5 includes a brand new <a
-href="http://en.wikipedia.org/wiki/XCore">XCore</a> backend.</li>
-
-<li>llvm-gcc now generally supports the GFortran front-end, and the precompiled
-release binaries now support Fortran, even on Mac OS/X.</li>
-
-<li>CMake is now used by the <a href="GettingStartedVS.html">LLVM build process
-on Windows</a>.  It automatically generates Visual Studio project files (and
-more) from a set of simple text files.  This makes it much easier to
-maintain.  In time, we'd like to standardize on CMake for everything.</li>
-
-<li>LLVM 2.5 now uses (and includes) Google Test for unit testing.</li>
-
-<li>The LLVM native code generator now supports arbitrary precision integers.
-Types like <tt>i33</tt> have long been valid in the LLVM IR, but were previously
-only supported by the interpreter.  Note that the C backend still does not
-support these.</li>
-
-<li>LLVM 2.5 no longer uses 'bison,' so it is easier to build on Windows.</li>
+<li>Something wonderful!</li>
 </ul>
 
 </div>
@@ -325,18 +274,7 @@
 includes support for the C, C++, Objective-C, Ada, and Fortran front-ends.</p>
 
 <ul>
-<li>In this release, the GCC inliner is completely disabled.  Previously the GCC
-inliner was used to handle always-inline functions and other cases.  This caused
-problems with code size growth, and it is completely disabled in this
-release.</li>
-
-<li>llvm-gcc (and LLVM in general) now support code generation for stack
-canaries, which is an effective form of <a
-href="http://en.wikipedia.org/wiki/Stack-smashing_protection">buffer overflow
-protection</a>.  llvm-gcc supports this with the <tt>-fstack-protector</tt>
-command line option (just like GCC).  In LLVM IR, you can request code
-generation for stack canaries with function attributes.
-</li>
+<li>Something wonderful!</li>
 </ul>
 
 </div>
@@ -352,48 +290,7 @@
 can be useful if you are writing a front-end for LLVM:</p>
 
 <ul>
-<li>The <a href="LangRef.html#i_shufflevector">shufflevector</a> instruction 
-has been generalized to allow different shuffle mask width than its input
-vectors.  This allows you to use shufflevector to combine two
-"<4 x float>" vectors into a "<8 x float>" for example.</li>
-
-<li>LLVM IR now supports new intrinsics for computing and acting on <a 
-href="LangRef.html#int_overflow">overflow of integer operations</a>. This allows
-efficient code generation for languages that must trap or throw an exception on
-overflow.  While these intrinsics work on all targets, they only generate
-efficient code on X86 so far.</li>
-
-<li>LLVM IR now supports a new <a href="LangRef.html#linkage">private
-linkage</a> type to produce labels that are stripped by the assembler before it
-produces a .o file (thus they are invisible to the linker).</li>
-
-<li>LLVM IR supports two new attributes for better alias analysis.  The <a
-href="LangRef.html#paramattrs">noalias</a> attribute can now be used on the
-return value of a function to indicate that it returns new memory (e.g.
-'malloc', 'calloc', etc).
-The new <a href="LangRef.html#paramattrs">nocapture</a> attribute can be used
-on pointer arguments to indicate that the function does not return the pointer,
-store it in an object that outlives the call, or let the value of the pointer
-escape from the function in any other way.
-Note that it is the pointer itself that must not escape, not the value it
-points to: loading a value out of the pointer is perfectly fine.
-Many standard library functions (e.g. 'strlen', 'memcpy') have this property.
-<!-- The simplifylibcalls pass applies these attributes to standard libc functions. -->
-</li>
-
-<li>The parser for ".ll" files in lib/AsmParser is now completely rewritten as a
-recursive descent parser.  This parser produces better error messages (including
-caret diagnostics), is less fragile (less likely to crash on strange things),
-does not leak memory, is more efficient, and eliminates LLVM's last use of the
-'bison' tool.</li>
-
-<li>Debug information representation and manipulation internals have been
-    consolidated to use a new set of classes in
-    <tt>llvm/Analysis/DebugInfo.h</tt>.  These routines are more
-    efficient, robust, and extensible and replace the older mechanisms.
-    llvm-gcc, clang, and the code generator now use them to create and process
-    debug information.</li>
-
+<li>Something wonderful!</li>
 </ul>
 
 </div>
@@ -410,21 +307,7 @@
 
 <ul>
 
-<li>The loop optimizer now improves floating point induction variables in
-several ways, including adding shadow induction variables to avoid
-"integer <-> floating point" conversions in loops when safe.</li>
-
-<li>The "-mem2reg" pass is now much faster on code with large basic blocks.</li>
-
-<li>The "-jump-threading" pass is more powerful: it is iterative
-  and handles threading based on values with fully and partially redundant
-  loads.</li>
-
-<li>The "-memdep" memory dependence analysis pass (used by GVN and memcpyopt) is
-    both faster and more aggressive.</li>
-
-<li>The "-scalarrepl" scalar replacement of aggregates pass is more aggressive
-    about promoting unions to registers.</li>
+<li>Something wonderful!</li>
 
 </ul>
 
@@ -442,33 +325,8 @@
 it run faster:</p>
 
 <ul>
-<li>The <a href="WritingAnLLVMBackend.html">Writing an LLVM Compiler
-Backend</a> document has been greatly expanded and is substantially more
-complete.</li>
-
-<li>The SelectionDAG type legalization logic has been completely rewritten, is
-now more powerful (it supports arbitrary precision integer types for example),
-and is more correct in several corner cases.  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 (for now) and will be used if
-<tt>-disable-legalize-types</tt> is passed to the code generator.
-</li>
 
-<li>The code generator now supports widening illegal vectors to larger legal
-ones (for example, converting operations on <3 x float> to work on
-<4 x float>) which is very important for common graphics
-applications.</li>
-
-<li>The assembly printers for each target are now split out into their own
-libraries that are separate from the main code generation logic.  This reduces
-the code size of JIT compilers by not requiring them to be linked in.</li>
-
-<li>The 'fast' instruction selection path (used at -O0 and for fast JIT
-    compilers) now supports accelerating codegen for code that uses exception
-    handling constructs.</li>
-    
-<li>The optional PBQP register allocator now supports register coalescing.</li>
+<li>Something wonderful!</li>
 </ul>
 </div>
 
@@ -482,37 +340,8 @@
 </p>
 
 <ul>
-<li>The <tt><a href="LangRef.html#int_returnaddress">llvm.returnaddress</a></tt>
-intrinsic (which is used to implement <tt>__builtin_return_address</tt>) now
-supports non-zero stack depths on X86.</li>
-
-<li>The X86 backend now supports code generation of vector shift operations
-using SSE instructions.</li>
-
-<li>X86-64 code generation now takes advantage of red zone, unless the
-<tt>-mno-red-zone</tt> option is specified.</li>
-
-<li>The X86 backend now supports using address space #256 in LLVM IR as a way of
-performing memory references off the GS segment register.  This allows a
-front-end to take advantage of very low-level programming techniques when
-targeting X86 CPUs. See <tt>test/CodeGen/X86/movgs.ll</tt> for a simple
-example.</li>
-
-<li>The X86 backend now supports a <tt>-disable-mmx</tt> command line option to
-  prevent use of MMX even on chips that support it.  This is important for cases
-  where code does not contain the proper <tt>llvm.x86.mmx.emms</tt>
-  intrinsics.</li>
-
-<li>The X86 JIT now detects the new Intel <a 
-   href="http://en.wikipedia.org/wiki/Intel_Core_i7">Core i7</a> and <a
-   href="http://en.wikipedia.org/wiki/Intel_Atom">Atom</a> chips and
-    auto-configures itself appropriately for the features of these chips.</li>
-    
-<li>The JIT now supports exception handling constructs on Linux/X86-64 and
-    Darwin/x86-64.</li>
 
-<li>The JIT supports Thread Local Storage (TLS) on Linux/X86-32 but not yet on
-    X86-64.</li>
+<li>Something wonderful!</li>
 </ul>
 
 </div>
@@ -527,14 +356,7 @@
 </p>
 
 <ul>
-<li>Both direct and indirect load/stores work now.</li>
-<li>Logical, bitwise and conditional operations now work for integer data
-types.</li>
-<li>Function calls involving basic types work now.</li>
-<li>Support for integer arrays.</li>
-<li>The compiler can now emit libcalls for operations not supported by m/c
-instructions.</li>
-<li>Support for both data and ROM address spaces.</li>
+<li>Something wonderful!</li>
 </ul>
 
 <p>Things not yet supported:</p>
@@ -560,38 +382,7 @@
 <p>New features include:</p>
 
 <ul>
-<li>Beginning with LLVM 2.5, <tt>llvmc2</tt> is known as
- just <tt>llvmc</tt>. The old <tt>llvmc</tt> driver was removed.</li>
-
-<li>The Clang plugin was substantially improved and is now enabled
- by default. The command <tt>llvmc --clang</tt> can be now used as a
- synonym to <tt>ccc</tt>.</li>
-
-<li>There is now a <tt>--check-graph</tt> option, which is supposed to catch
- common errors like multiple default edges, mismatched output/input language
- names and cycles. In general, these checks can't be done at compile-time
- because of the need to support plugins.</li>
-
-<li>Plugins are now more flexible and can refer to compilation graph nodes and
- options defined in other plugins. To manage dependencies, a priority-sorting
- mechanism was introduced. This change affects the TableGen file syntax. See the
- documentation for details.</li>
-
-<li>Hooks can now be provided with arguments. The syntax is "<tt>$CALL(MyHook,
- 'Arg1', 'Arg2', 'Arg3')</tt>".</li>
-
-<li>A new option type: multi-valued option, for options that take more than one
- argument (for example, "<tt>-foo a b c</tt>").</li>
-
-<li>New option properties: '<tt>one_or_more</tt>', '<tt>zero_or_more</tt>',
-'<tt>hidden</tt>' and '<tt>really_hidden</tt>'.</li>
-
-<li>The '<tt>case</tt>' expression gained an '<tt>error</tt>' action and
- an '<tt>empty</tt>' test (equivalent to "<tt>(not (not_empty ...))</tt>").</li>
-
-<li>Documentation now looks more consistent to the rest of the LLVM
- docs. There is also a man page now.</li>
-
+<li>Something wonderful!</li>
 </ul>
 
 </div>
@@ -610,7 +401,7 @@
 
 <ul>
 
-<li>llvm-gcc defaults to <tt>-fno-math-errno</tt> on all X86 targets.</li>
+<li>Something horrible!</li>
 
 </ul>
 
@@ -619,8 +410,7 @@
 API changes are:</p>
 
 <ul>
-<li>Some deprecated interfaces to create <tt>Instruction</tt> subclasses, that
-    were spelled with lower case "create," have been removed.</li>
+<li>The <tt>getABITypeSize</tt> methods are now called <tt>getAllocSize</tt>.</li>
 </ul>
 
 </div>





More information about the llvm-commits mailing list