X-Git-Url: http://demsky.eecs.uci.edu/git/?a=blobdiff_plain;f=docs%2FReleaseNotes.html;h=56dd66a21aa53860577177cb78dd5c89a3456dc3;hb=9d2c9bd11377ecac24e5c7c6198153375ac72562;hp=fa3317bb6e601408e52b4ba07addbf0e0995b089;hpb=60893e5fe94d7566f56e360f5ccc780ab4861b43;p=oota-llvm.git diff --git a/docs/ReleaseNotes.html b/docs/ReleaseNotes.html index fa3317bb6e6..56dd66a21aa 100644 --- a/docs/ReleaseNotes.html +++ b/docs/ReleaseNotes.html @@ -1,17 +1,19 @@ + - LLVM 2.0 Release Notes + LLVM 2.3 Release Notes -
LLVM 2.0 Release Notes
+
LLVM 2.3 Release Notes
  1. Introduction
  2. +
  3. Major Changes and Sub-project Status
  4. What's New?
  5. Installation Instructions
  6. Portability and Supported Platforms
  7. @@ -23,6 +25,8 @@

    Written by the LLVM Team

    + +

    Introduction @@ -32,10 +36,10 @@

    This document contains the release notes for the LLVM compiler -infrastructure, release 2.0. Here we describe the status of LLVM, including any -known problems and major improvements from the previous release. All LLVM +infrastructure, release 2.3. 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. +releases web site.

    For more information about LLVM, including information about the latest release, please check out the main LLVM @@ -43,434 +47,496 @@ 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.

    -

    This is the eleventh public release of the LLVM Compiler Infrastructure. -Being the first major release since 1.0, this release is different in several -ways from our previous releases:

    - -
      -
    1. We took this as an opportunity to -break backwards compatibility with the LLVM 1.x bytecode and .ll file format. -If you have LLVM 1.9 .ll files that you would like to upgrade to LLVM 2.x, we -recommend the use of the stand alone llvm-upgrade -tool (which is included with 2.0). We intend to keep compatibility with .ll -and .bc formats within the 2.x release series, like we did within the 1.x -series.
    2. -
    3. There are several significant change to the LLVM IR and internal APIs, such - as a major overhaul of the type system, the completely new bitcode file - format, etc (described below).
    4. -
    5. We designed the release around a 6 month release cycle instead of the usual - 3-month cycle. This gave us extra time to develop and test some of the - more invasive features in this release.
    6. -
    7. LLVM 2.0 no longer supports the llvm-gcc3 front-end. Users are required to - upgrade to llvm-gcc4. llvm-gcc4 includes many features over - llvm-gcc3, is faster, and is much easier to - build from source.
    8. -
    - -

    Note that while this is a major version bump, this release has been - extensively tested on a wide range of software. It is easy to say that this - is our best release yet, in terms of both features and correctness. This is - the first LLVM release to correctly compile and optimize major software like - LLVM itself, Mozilla/Seamonkey, Qt 4.3rc1, kOffice, etc out of the box on - linux/x86. -

    +

    This is the fourteenth public release of the LLVM Compiler Infrastructure. +It includes a large number of features and refinements from LLVM 2.2.

    + + - -
    -

    Changes to the LLVM IR itself:

    +

    LLVM 2.3 no longer supports llvm-gcc 4.0, it has been replaced with + llvm-gcc 4.2.

    -
      +

      LLVM 2.3 no longer includes the llvm-upgrade tool. It was useful + for upgrading LLVM 1.9 files to LLVM 2.x syntax, but you can always use a + previous LLVM release to do this. One nice impact of this is that the LLVM + regression test suite no longer depends on llvm-upgrade, which makes it run + faster.

      -
    • Integer types are now completely signless. This means that we - have types like i8/i16/i32 instead of ubyte/sbyte/short/ushort/int - etc. LLVM operations that depend on sign have been split up into - separate instructions (PR950). This - eliminates cast instructions that just change the sign of the operands (e.g. - int -> uint), which reduces the size of the IR and makes optimizers - simpler to write.
    • - -
    • Integer types with arbitrary bitwidths (e.g. i13, i36, i42, i1057, etc) are - now supported in the LLVM IR and optimizations (PR1043). However, neither llvm-gcc - (PR1284) nor the native code generators - (PR1270) support non-standard width - integers yet.
    • - -
    • 'Type planes' have been removed (PR411). - It is no longer possible to have two values with the same name in the - same symbol table. This simplifies LLVM internals, allowing significant - speedups.
    • - -
    • Global variables and functions in .ll files are now prefixed with - @ instead of % (PR645).
    • - -
    • The LLVM 1.x "bytecode" format has been replaced with a - completely new binary representation, named 'bitcode'. The Bitcode Format brings a - number of advantages to the LLVM over the old bytecode format: it is denser - (files are smaller), more extensible, requires less memory to read, - is easier to keep backwards compatible (so LLVM 2.5 will read 2.0 .bc - files), and has many other nice features.
    • - -
    • Load and store instructions now track the alignment of their pointer - (PR400). This allows the IR to - express loads that are not sufficiently aligned (e.g. due to '#pragma - packed') or to capture extra alignment information.
    • -
    +

    The llvm2cpp tool has been folded into llc, use + llc -march=cpp instead of llvm2cpp.

    -

    Major new features:

    +

    LLVM API Changes:

      - -
    • A number of ELF features are now supported by LLVM, including 'visibility', - extern weak linkage, Thread Local Storage (TLS) with the __thread - keyword, and symbol aliases. - Among other things, this means that many of the special options needed to - configure llvm-gcc on linux are no longer needed, and special hacks to build - large C++ libraries like Qt are not needed.
    • - -
    • LLVM now has a new MSIL backend. llc -march=msil will now turn LLVM - into MSIL (".net") bytecode. This is still fairly early development - with a number of limitations.
    • +
    • Several core LLVM IR classes have migrated to use the + 'FOOCLASS::Create(...)' pattern instead of 'new + FOOCLASS(...)' (e.g. where FOOCLASS=BasicBlock). We hope to + standardize on FOOCLASS::Create for all IR classes in the future, + but not all of them have been moved over yet.
    • +
    • LLVM 2.3 renames the LLVMBuilder and LLVMFoldingBuilder classes to + IRBuilder. +
    • +
    • MRegisterInfo was renamed to + + TargetRegisterInfo.
    • +
    • The MappedFile class is gone, please use + + MemoryBuffer instead.
    • +
    • The '-enable-eh' flag to llc has been removed. Now code should + encode whether it is safe to omit unwind information for a function by + tagging the Function object with the 'nounwind' attribute.
    • +
    • The ConstantFP::get method that uses APFloat now takes one argument + instead of two. The type argument has been removed, and the type is + now inferred from the size of the given APFloat value.
    -
    + + - -
    -

    New features include: +

    +The core LLVM 2.3 distribution currently consists of code from the core LLVM +repository (which roughly contains the LLVM optimizer, 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 two which +are the most actively developed are the new vmkit Project +and the Clang Project.

    +
    - -
    - -
    Optimizer -Improvements
    + +
    +Clang +
    -

    New features include: -

    - -
    -
  8. The [Post]DominatorSet classes have been removed from LLVM and clients - switched to use the far-more-efficient ETForest class instead.
  9. -
  10. The ImmediateDominator class has also been removed, and clients have been - switched to use DominatorTree instead.
  11. + +
    + What's New? +
    + -
  12. The predicate simplifier pass has been improved, making it able to do - simple value range propagation and eliminate more conditionals.
  13. +
    - - +

    LLVM 2.3 includes a huge number of bug fixes, performance tweaks and minor +improvements. Some of the major improvements and new features are listed in +this section. +

    - -
    Code -Generator Enhancements
    + +
    +Major New Features +
    -

    -New features include: -

    + +

    LLVM 2.3 includes several major new capabilities:

    -
  14. Support now exists for very simple (but still very useful) - rematerialization the register allocator, enough to move - instructions like "load immediate" and constant pool loads.
  15. +
    -
  16. Switch statement lowering is significantly better, improving codegen for - sparse switches that have dense subregions, and implemented support - for the shift/and trick.
  17. -
  18. Added support for tracking physreg sub-registers and super-registers - in the code generator, as well as extensive register - allocator changes to track them.
  19. + +
    +llvm-gcc 4.2 Improvements +
    -
  20. There is initial support for virtreg sub-registers - (PR1350).
  21. +
    - +

    LLVM 2.3 fully supports the llvm-gcc 4.2 front-end, and includes support +for the C, C++, Objective-C, Ada, and Fortran front-ends.

    -Other improvements include: -

    - -
  22. The code generator now has more accurate and general hooks for - describing addressing modes ("isLegalAddressingMode") to - optimizations like loop strength reduction and code sinking.
  23. +
    -
  24. Progress has been made on a direct Mach-o .o file writer. Many small - apps work, but it is still not quite complete.
  25. - + +
    +LLVM Core Improvements +
    -

    In addition, the LLVM target description format has itself been extended in - several ways:

    - -