X-Git-Url: http://demsky.eecs.uci.edu/git/?a=blobdiff_plain;f=docs%2FReleaseNotes.html;h=56dd66a21aa53860577177cb78dd5c89a3456dc3;hb=9d2c9bd11377ecac24e5c7c6198153375ac72562;hp=5b71a715ec3b4afb983e05410a0492bf91dea71f;hpb=791f77b2d4359d619b4fc48814c129e087c48e89;p=oota-llvm.git diff --git a/docs/ReleaseNotes.html b/docs/ReleaseNotes.html index 5b71a715ec3..56dd66a21aa 100644 --- a/docs/ReleaseNotes.html +++ b/docs/ReleaseNotes.html @@ -1,3 +1,4 @@ + @@ -12,6 +13,7 @@
  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 @@ -52,7 +56,7 @@ current one. To see the release notes for a specific releases, please see the @@ -64,7 +68,6 @@ It includes a large number of features and refinements from LLVM 2.2.

    -Removed features in LLVM 2.3 +Major Changes in LLVM 2.3 +
    + +
    + +

    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.

    + +

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

    + +

    LLVM API Changes:

    + + +
    + + +
    +Other LLVM Sub-Projects +
    + +
    +

    +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. +

    +
    + + +
    +vmkit
    +

    +The "vmkit" project is a new addition to the LLVM family. It 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.

    + +

    The JVM, called JnJVM, executes real-world applications such as Apache +projects (e.g. Felix and Tomcat) and the SpecJVM98 benchmark. It uses the GNU +Classpath project for the base classes. The CLI implementation, called N3, is +its in early stages but can execute simple applications and the "pnetmark" +benchmark. It uses the pnetlib project as its core library.

    + +

    The 'vmkit' VMs compare in performance with industrial and top open-source +VMs on scientific applications. Besides the JIT, the VMs use many features of +the LLVM framework, including the standard set of optimizations, atomic +operations, custom function provider and memory manager for JITed methods, and +specific virtual machine optimizations. vmkit is not an official part of LLVM +2.3 release. It is publicly available under the LLVM license and can be +downloaded from: +

    + +
    +
    svn co http://llvm.org/svn/llvm-project/vmkit/trunk vmkit
    +
    + +
    + + +
    +Clang +
    + +
    + +

    The Clang project 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.

    -

    LLVM 2.2 was the last LLVM release to support llvm-gcc 4.0 and llvm-upgrade. -llvm-gcc 4.0 has been replaced with llvm-gcc 4.2. llvm-upgrade 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 regressionn -test suite no longer depends on llvm-upgrade, which makes it run faster.

    +

    At this point, Clang is most useful if you are interested in source-to-source +transformations (such as refactoring) and other source-level tools for C and +Objective-C. Clang now also includes tools for turning C code into pretty HTML, +and includes a new static +analysis tool in development. This tool focuses on automatically finding +bugs in C and Objective-C code.

    + + +
    + What's New? +
    + + +
    + +

    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. +

    +
    +
    Major New Features @@ -95,7 +216,50 @@ test suite no longer depends on llvm-upgrade, which makes it run faster.

    LLVM 2.3 includes several major new capabilities:

    @@ -103,27 +267,26 @@ test suite no longer depends on llvm-upgrade, which makes it run faster.

    -llvm-gcc 4.2 Improvements and Clang +llvm-gcc 4.2 Improvements
    -

    LLVM 2.3 fully supports llvm-gcc 4.2 front-end.

    +

    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.

    + +

    +

    @@ -137,49 +300,144 @@ this project, please see its web site.

    New features include:

    + @@ -391,25 +705,9 @@ appropriate nops inserted to ensure restartability.
    @@ -422,13 +720,11 @@ programs.
    @@ -437,69 +733,29 @@ programs. - -
    Bugs
    -

    llvm-gcc 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.

    -
    - - -
    - Notes -
    - -
    -
      - -
    • llvm-gcc does not support __builtin_apply yet. - See Constructing Calls: Dispatching a call to another function.

      -
    • - -
    • llvm-gcc partially supports these GCC extensions:

      -
        -
      1. Nested Functions: - - As in Algol and Pascal, lexical scoping of functions. - Nested functions are supported, but llvm-gcc does not support - taking the address of a nested function (except on X86 targets) - or non-local gotos.
      2. - -
      3. Function Attributes: - - Declaring that functions have no side effects or that they can never - return.
        +

        The only major language feature of GCC not supported by llvm-gcc is + the __builtin_apply family of builtins. However, some extensions + are only supported on some targets. For example, trampolines are only + supported on some targets (these are used when you take the address of a + nested function).

        - Supported: alias, always_inline, cdecl, - const, constructor, destructor, - deprecated, fastcall, format, - format_arg, non_null, noinline, - noreturn, nothrow, pure, regparm - section, stdcall, unused, used, - visibility, warn_unused_result, weak
        - - Ignored: malloc, - no_instrument_function
      4. -
      -
    • - -
    - -

    If you run into GCC extensions which have not been included in any of these -lists, please let us know (also including whether or not they work).

    +

    If you run into GCC extensions which are not supported, please let us know. +

    @@ -509,8 +765,9 @@ tested and works for a number of non-trivial programs, including LLVM itself, Qt, Mozilla, etc.

      -
    • Exception handling only works well on the X86 and PowerPC targets. -It works well for x86-64 darwin but not x86-64 linux.
    • +
    • Exception handling works well on the X86 and PowerPC targets, including +X86-64 darwin. This works when linking to a libstdc++ compiled by GCC. It is +supported on X86-64 linux, but that is disabled by default in this release.
    @@ -518,22 +775,24 @@ It works well for x86-64 darwin but not x86-64 linux.
    The llvm-gcc 4.2 Ada compiler works fairly well, however this is not a mature technology and problems should be expected.
      -
    • The Ada front-end currently only builds on x86-32. This is mainly due +
    • The Ada front-end currently only builds on X86-32. This is mainly due to lack of trampoline support (pointers to nested functions) on other platforms, -however it also fails to build on x86-64 +however it also fails to build on X86-64 which does support trampolines.
    • The Ada front-end fails to bootstrap. Workaround: configure with --disable-bootstrap.
    • The c380004 and c393010 ACATS tests -fail (c380004 also fails with gcc-4.2 mainline).
    • -
    • Many gcc specific Ada tests continue to crash the compiler.
    • +fail (c380004 also fails with gcc-4.2 mainline). When built at -O3, the +cxg2021 ACATS test also fails. +
    • Some gcc specific Ada tests continue to crash the compiler. The testsuite +reports most tests as having failed even though they pass.
    • The -E binder option (exception backtraces) does not work and will result in programs crashing if an exception is raised. Workaround: do not use -E.
    • @@ -541,29 +800,15 @@ crashing if an exception is raised. Workaround: do not use -E. or finish at a non-byte offset in a record. Workaround: do not pack records or use representation clauses that result in a field of a non-discrete type starting or finishing in the middle of a byte. -
    • The lli interpreter considers 'main' -as generated by the Ada binder to be invalid. -Workaround: hand edit the file to use pointers for argv and envp rather than -integers.
    • -
    • The -fstack-check option is ignored.
    • -
    -
    - - - - -
    - -
    - -