X-Git-Url: http://plrg.eecs.uci.edu/git/?a=blobdiff_plain;f=docs%2FReleaseNotes.html;h=d2c61176fa67216220d37a5ee1b6f4cebb874bd4;hb=8b44b9064427821ba2784ff3617d7cc5460df5de;hp=483147a66779c4d4583fc2974cffaa0e1a9d32fa;hpb=c71173a2f77b86302f3dfb5bf4e894847fb2ed55;p=oota-llvm.git diff --git a/docs/ReleaseNotes.html b/docs/ReleaseNotes.html index 483147a6677..d2c61176fa6 100644 --- a/docs/ReleaseNotes.html +++ b/docs/ReleaseNotes.html @@ -4,11 +4,11 @@ - LLVM 1.7 Release Notes + LLVM 2.1 Release Notes -
LLVM 1.7 Release Notes
+
LLVM 2.1 Release Notes
  1. Introduction
  2. @@ -32,12 +32,10 @@

    This document contains the release notes for the LLVM compiler -infrastructure, release 1.7. Here we describe the status of LLVM, including any -known problems and major improvements from the previous release. The most -up-to-date version of this document can be found on the LLVM releases web site. 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.

    +infrastructure, release 2.1. Here we describe the status of LLVM, including +major improvements from the previous release and any known problems. All LLVM +releases may be downloaded from the LLVM +releases web site.

    For more information about LLVM, including information about the latest release, please check out the main LLVM @@ -45,10 +43,10 @@ web site. If you have questions or comments, the LLVM developer's mailing list is a good place to send them.

    -

    Note that if you are reading this file from CVS or the main LLVM web page, -this document applies to the next release, not the current one. To see -the release notes for the current or previous releases, see the releases page.

    +

    Note that if you are reading this file from a Subversion checkout or the +main LLVM web page, this document applies to the next release, not the +current one. To see the release notes for a specific releases, please see the +releases page.

    @@ -60,221 +58,235 @@ href="http://llvm.org/releases/">releases page.

    -

    This is the eighth public release of the LLVM Compiler Infrastructure. This -release incorporates a large number of enhancements and new features, -including vector support (Intel SSE and Altivec), a new GCC4.0-based -C/C++ front-end, Objective C/C++ support, inline assembly support, and many -other big features. -

    +

    This is the twelfth public release of the LLVM Compiler Infrastructure. +It includes many features and refinements from LLVM 2.0.

    -New Features in LLVM 1.7 +New Frontends
    - -
    GCC4.0-based llvm-gcc -front-end
    -
    -

    LLVM 1.8 includes a brand new llvm-gcc, based on GCC 4.0.1. This version -of llvm-gcc solves many serious long-standing problems with llvm-gcc, including -all of those blocked by the llvm-gcc 4 meta -bug. In addition, llvm-gcc4 implements support for many new features, -including GCC inline assembly, generic vector support, SSE and Altivec -intrinsics, and several new GCC attributes. In addition, llvm-gcc4 is -significantly faster than llvm-gcc3, respects -O options, its -c/-S options -correspond to GCC's (they emit native code), and it has debugging support well -underway.

    - -

    If you can use it, llvm-gcc4 is offers significant new functionality, and we -hope that it will replace llvm-gcc3 completely in a future release. -Unfortunately, it does not currently support C++ exception handling at all, and -it only works on Apple Mac OS/X machines with X86 or PowerPC processors. -

    +

    LLVM 2.1 brings two new beta C front-ends. First, a new version of llvm-gcc +based on GCC 4.2, innovatively called "llvm-gcc-4.2". This promises to bring +FORTRAN and Ada support to LLVM as well as features like atomic builtins and +OpenMP. None of these actually work yet, but don't let that stop you checking +it out!

    + +

    Second, LLVM now includes its own native C and Objective-C front-end (C++ is +in progress, but is not very far along) code named "clang". This front-end has a number of great +features, primarily aimed at source-level analysis and speeding up compile-time. +At this point though, the LLVM Code Generator component is still very early in +development, so it's mostly useful for people looking to build source-level +analysis tools or source-to-source translators.

    - -
    Inline Assembly -Support
    + +
    +Optimizer Improvements +
    -

    The LLVM IR and llvm-gcc4 front-end now fully support arbitrary GCC inline assembly. The LLVM X86 and PowerPC -code generators have initial support for it, -being able to compile basic statements, but are missing some features. Please -report any inline asm statements that crash the compiler or that are miscompiled -as bugs.

    +

    Some of the most noticable feature improvements this release have been in the +optimizer, speeding it up and making it more aggressive. For example:

    + +
    - -
    New SPARC backend
    + +
    +Code Generator Improvements +
    -

    LLVM 1.7 includes a new, fully functional, SPARC backend built in the -target-independent code generator. This SPARC backend includes support for -SPARC V8 and SPARC V9 subtargets (controlling whether V9 features can be used), -and targets the 32-bit SPARC ABI.

    +

    One of the main focuses of this release was performance tuning and bug + fixing. In addition to these, several new major changes occurred:

    -

    The LLVM 1.7 release is the last release that will include the LLVM "SparcV9" -backend, which was the very first LLVM native code generator. In 1.8, it will -be removed, replaced with the new SPARC backend.

    +
    +
  3. Dale finished up the Tail Merging optimization in the code generator, and + enabled it by default. This produces smaller code that is also faster in + some cases.
  4. - -
    Generic Vector Support -
    +
  5. Christopher Lamb implemented support for virtual register sub-registers, + which can be used to better model many forms of subregisters. As an example + use, he modified the X86 backend to use this to model truncates and + extends more accurately (leading to better code).
  6. -
    +
  7. Dan Gohman changed the way we represent vectors before legalization, + significantly simplifying the SelectionDAG representation for these and + making the code generator faster for vector code.
  8. -

    LLVM now includes significantly extended support for SIMD vectors in its -core instruction set. It now includes three new instructions for manipulating -vectors: extractelement, -insertelement, and -shufflevector. Further, -many bugs in vector handling have been fixed, and vectors are now supported by -the target-independent code generator. For example, if a vector operation is -not supported by a particular target, it will be correctly broken down and -executed as scalar operations.

    - -

    Because llvm-gcc3 does not support GCC generic vectors or vector intrinsics, -so llvm-gcc4 must be used.

    -
    +
  9. Evan contributed a new target independent if-converter. While it is + target independent, so far only the ARM backend uses it.
  10. +
  11. Evan rewrote the way the register allocator handles rematerialization, + allowing it to be much more effective on two-address targets like X86, + and taught it to fold loads away when possible (also a big win on X86).
  12. - -
    Intel SSE and PowerPC -Altivec support -
    +
  13. Dan Gohman contributed support for better alignment and volatility handling + in the code generator, and significantly enhanced alignment analysis for SSE + load/store instructions. With his changes, an insufficiently-aligned SSE + load instruction turns into movups, for example.
  14. -
    +
  15. Duraid Madina contributed a new "bigblock" register allocator, and Roman + Levenstein contributed several big improvements. BigBlock is optimized for + code that uses very large basic blocks. It is slightly slower than the + "local" allocator, but produces much better code.
  16. -

    The LLVM X86 backend now supports Intel SSE 1, 2, and 3, and now uses scalar -SSE operations to implement scalar floating point math when the target supports -SSE1 (for floats) or SSE2 (for doubles). Vector SSE instructions are generated -by llvm-gcc4 when the generic vector mechanism or specific SSE intrinsics are -used. -

    +
  17. David Greene refactored the register allocator to split coalescing out from + allocation, making coalescers pluggable.
  18. -

    The LLVM PowerPC backend now supports the Altivec instruction set, including -both GCC -maltivec and -faltivec modes. Altivec instructions are generated -by llvm-gcc4 when the generic vector mechanism or specific Altivec intrinsics -are used. -

    +
    - -
    Optimizer -Improvements
    + + +
    +Target Specific Improvements +
    +

    New features include: +

    + +
    - -
    Code Generator -Improvements
    + + +
    +llvm-gcc Improvements +
    +

    New features include: +

    + +
    - -
    Other New Features
    + + +
    +LLVM Core Improvements +
    +

    New features include: +

    + +
    -
    -Significant Changes in LLVM 1.7 +Other Improvements
    +

    New features include: +

    + +
    -
    Portability and Supported Platforms @@ -286,12 +298,14 @@ Improvements

    LLVM is known to work on the following platforms:

    @@ -331,13 +345,14 @@ there isn't already one.

    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.

    +components, please contact us on the LLVMdev list.

    @@ -346,60 +361,150 @@ components, please contact us on the llvmdev list.

    - Known problems with the Build System + Known problems with the X86 back-end
    + +
    + + +
    + Known problems with the PowerPC back-end
    +
    + + + +
    - Known problems with the LLVM Core + Known problems with the ARM back-end
    +
    - Known problems with the C front-end + Known problems with the SPARC back-end
    - -
    Bugs
    +
    + + + +
    + + +
    + Known problems with the Alpha back-end +
    -

    -llvm-gcc3 has many significant problems that are fixed by llvm-gcc4. See - those blocked on the llvm-gcc4 meta bug. -Two signicant ones include:

    + +
    + + +
    + Known problems with the IA64 back-end +
    + +
    + +
    + + +
    + Known problems with the C back-end +
    + +
    + + + +
    + + + +
    + Known problems with the C front-end +
    + + +
    Bugs
    + +
    + +

    llvm-gcc4 does not currently support Link-Time +Optimization on most platforms "out-of-the-box". Please inquire on the +llvmdev mailing list if you are interested.

    +
    @@ -408,101 +513,56 @@ href="http://llvm.org/PR162">with the largest union member.
    -