From ece02cd5829cea836e9365b0845a8ef042d17b0a Mon Sep 17 00:00:00 2001 From: dim Date: Sun, 12 Jun 2011 15:42:51 +0000 Subject: Vendor import of llvm trunk r132879: http://llvm.org/svn/llvm-project/llvm/trunk@132879 --- docs/ReleaseNotes.html | 322 +++++++++---------------------------------------- 1 file changed, 58 insertions(+), 264 deletions(-) (limited to 'docs/ReleaseNotes.html') diff --git a/docs/ReleaseNotes.html b/docs/ReleaseNotes.html index 71bf16e..12546c8 100644 --- a/docs/ReleaseNotes.html +++ b/docs/ReleaseNotes.html @@ -4,11 +4,11 @@ - LLVM 2.9 Release Notes + LLVM 3.0 Release Notes -

LLVM 2.9 Release Notes

+

LLVM 3.0 Release Notes

LLVM Dragon Logo @@ -16,8 +16,8 @@
  1. Introduction
  2. Sub-project Status Update
  3. -
  4. External Projects Using LLVM 2.9
  5. -
  6. What's New in LLVM 2.9?
  7. +
  8. External Projects Using LLVM 3.0
  9. +
  10. What's New in LLVM 3.0?
  11. Installation Instructions
  12. Known Problems
  13. Additional Information
  14. @@ -28,10 +28,10 @@ @@ -44,7 +44,7 @@ Release Notes.

    This document contains the release notes for the LLVM Compiler -Infrastructure, release 2.9. Here we describe the status of LLVM, including +Infrastructure, release 3.0. 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 LLVM releases web site.

    @@ -79,7 +79,7 @@ current one. To see the release notes for a specific release, please see the

    -The LLVM 2.9 distribution currently consists of code from the core LLVM +The LLVM 3.0 distribution currently consists of code from the core LLVM repository (which roughly includes the LLVM optimizers, code generators and supporting tools), the Clang repository and the llvm-gcc repository. In addition to this code, the LLVM Project includes other sub-projects that are in @@ -102,13 +102,7 @@ integrating with other development tools. Clang is considered a production-quality compiler for C, Objective-C, C++ and Objective-C++ on x86 (32- and 64-bit), and for darwin/arm targets.

    -

    In the LLVM 2.9 time-frame, the Clang team has made many improvements in C, -C++ and Objective-C support. C++ support is now generally rock solid, has -been exercised on a broad variety of code, and has several new C++'0x features -implemented (such as rvalue references and variadic templates). LLVM 2.9 has -also brought in a large range of bug fixes and minor features (e.g. __label__ -support), and is much more compatible with the Linux Kernel.

    +

    In the LLVM 3.0 time-frame, the Clang team has made many improvements:

    If Clang rejects your code but another compiler accepts it, please take a look at the language @@ -136,15 +130,11 @@ not known whether the compiled code actually works or not!

    -The 2.9 release has the following notable changes: +The 3.0 release has the following notable changes:

      -
    • The plugin is much more stable when compiling Fortran.
    • -
    • Inline assembly where an asm output is tied to an input of a different size -is now supported in many more cases.
    • -
    • Basic support for the __float128 type was added. It is now possible to -generate LLVM IR from programs using __float128 but code generation does not -work yet.
    • -
    • Compiling Java programs no longer systematically crashes the plugin.
    • +
    @@ -165,13 +155,7 @@ function. The compiler-rt library provides highly optimized implementations of this and other low-level routines (some are 3x faster than the equivalent libgcc routines).

    -

    In the LLVM 2.9 timeframe, compiler_rt has had several minor changes for - better ARM support, and a fairly major license change. All of the code in the - compiler-rt project is now dual - licensed under MIT and UIUC license, which allows you to use compiler-rt - in applications without the binary copyright reproduction clause. If you - prefer the LLVM/UIUC license, you are free to continue using it under that - license as well.

    +

    In the LLVM 3.0 timeframe,

    @@ -189,7 +173,7 @@ libraries in the larger LLVM Project, such as the Clang expression parser, the LLVM disassembler and the LLVM JIT.

    -LLDB is has advanced by leaps and bounds in the 2.9 timeframe. It is +LLDB is has advanced by leaps and bounds in the 3.0 timeframe. It is dramatically more stable and useful, and includes both a new tutorial and a side-by-side comparison with @@ -210,8 +194,7 @@ ground up to specifically target the forthcoming C++'0X standard and focus on delivering great performance.

    -In the LLVM 2.9 timeframe, libc++ has had numerous bugs fixed, and is now being -co-developed with Clang's C++'0x mode.

    +In the LLVM 3.0 timeframe,

    Like compiler_rt, libc++ is now dual @@ -245,7 +228,7 @@ Like compiler_rt, libc++ is now dual

    The VMKit project is an implementation of a Java Virtual Machine (Java VM or JVM) that uses LLVM for static and - just-in-time compilation. As of LLVM 2.9, VMKit now supports generational + just-in-time compilation. As of LLVM 3.0, VMKit now supports generational garbage collectors. The garbage collectors are provided by the MMTk framework, and VMKit can be configured to use one of the numerous implemented collectors of MMTk. @@ -275,7 +258,7 @@ be used to verify some algorithms.

    - External Open Source Projects Using LLVM 2.9 + External Open Source Projects Using LLVM 3.0

    @@ -283,7 +266,7 @@ be used to verify some algorithms.

    An exciting aspect of LLVM is that it is used as an enabling technology for a lot of other language and tools projects. This section lists some of the - projects that have already been updated to work with LLVM 2.9.

    + projects that have already been updated to work with LLVM 3.0.

    Crack Programming Language

    @@ -344,7 +327,7 @@ bitcode with SystemC-specific information.

    modules, and inline C, C++, Fortran and Faust code in Pure programs if the corresponding LLVM-enabled compilers are installed).

    -

    Pure version 0.47 has been tested and is known to work with LLVM 2.9 +

    Pure version 0.47 has been tested and is known to work with LLVM 3.0 (and continues to work with older LLVM releases >= 2.5).

    @@ -363,7 +346,7 @@ code.

    OpenJDK 7 b112, IcedTea6 1.9 and IcedTea7 1.13 and later have been tested -and are known to work with LLVM 2.9 (and continue to work with older LLVM +and are known to work with LLVM 3.0 (and continue to work with older LLVM releases >= 2.6 as well).

    @@ -420,7 +403,7 @@ and parallelism.

    audio signal processing. The name FAUST stands for Functional AUdio STream. Its programming model combines two approaches: functional programming and block diagram composition. In addition with the C, C++, JAVA output formats, the -Faust compiler can now generate LLVM bitcode, and works with LLVM 2.7-2.9.

    +Faust compiler can now generate LLVM bitcode, and works with LLVM 2.7-3.0.

    @@ -428,7 +411,7 @@ Faust compiler can now generate LLVM bitcode, and works with LLVM 2.7-2.9.

    - What's New in LLVM 2.9? + What's New in LLVM 3.0?

    @@ -446,24 +429,13 @@ in this section.
    -

    LLVM 2.9 includes several major new capabilities:

    +

    LLVM 3.0 includes several major new capabilities:

      - -
    • Type Based Alias Analysis (TBAA) is now implemented and turned on by default - in Clang. This allows substantially better load/store optimization in some - cases. TBAA can be disabled by passing -fno-strict-aliasing. -
    • - -
    • This release has seen a continued focus on quality of debug information. - LLVM now generates much higher fidelity debug information, particularly when - debugging optimized code.
    • -
    • Inline assembly now supports multiple alternative constraints.
    • - -
    • A new backend for the NVIDIA PTX virtual ISA (used to target its GPUs) is - under rapid development. It is not generally useful in 2.9, but is making - rapid progress.
    • +
    @@ -479,19 +451,9 @@ in this section. expose new optimization opportunities:

      -
    • The udiv, ashr, lshr, and shl - instructions now have support exact and nuw/nsw bits to indicate that they - don't overflow or shift out bits. This is useful for optimization of pointer differences and other cases.
    • - -
    • LLVM IR now supports the unnamed_addr - attribute to indicate that constant global variables with identical - initializers can be merged. This fixed an - issue where LLVM would incorrectly merge two globals which were supposed - to have distinct addresses.
    • - -
    • The new hotpatch attribute has been added - to allow runtime patching of functions.
    • +
    @@ -507,57 +469,9 @@ expose new optimization opportunities:

    release includes a few major enhancements and additions to the optimizers:

    @@ -577,38 +491,9 @@ and a number of other related areas that CPU instruction-set level tools work in.

    For more information, please see the

    @@ -671,31 +531,11 @@ it run faster:

    @@ -710,17 +550,9 @@ it run faster:

    @@ -731,21 +563,9 @@ it run faster:

      -
    • MicroBlaze: major updates for aggressive delay slot filler, MC-based - assembly printing, assembly instruction parsing, ELF .o file emission, and MC - instruction disassembler have landed.
    • - -
    • SPARC: Many improvements, including using the Y registers for - multiplications and addition of a simple delay slot filler.
    • - -
    • PowerPC: The backend has been largely MC'ized and is ready to support - directly writing out mach-o object files. No one seems interested in finishing - this final step though.
    • - -
    • Mips: Improved o32 ABI support, including better varags handling. -More instructions supported in codegen: madd, msub, rotr, rotrv and clo. -It also now supports lowering block addresses.
    • - +
    @@ -757,30 +577,13 @@ It also now supports lowering block addresses.

    If you're already an LLVM user or developer with out-of-tree changes based -on LLVM 2.8, this section lists some "gotchas" that you may run into upgrading +on LLVM 2.9, this section lists some "gotchas" that you may run into upgrading from the previous release.

      -
    • This is the last release to support the llvm-gcc frontend.
    • - -
    • LLVM has a new naming - convention standard, though the codebase hasn't fully adopted it yet.
    • - -
    • The new DIBuilder class provides a simpler interface for front ends to - encode debug info in LLVM IR, and has replaced DIFactory.
    • - -
    • LLVM IR and other tools always work on normalized target triples (which have - been run through Triple::normalize).
    • - -
    • The target triple x86_64--mingw64 is obsoleted. Use x86_64--mingw32 - instead.
    • - -
    • The PointerTracking pass has been removed from mainline, and moved to The - ClamAV project (its only client).
    • - -
    • The LoopIndexSplit, LiveValues, SimplifyHalfPowrLibCalls, GEPSplitter, and - PartialSpecialization passes were removed. They were unmaintained, - buggy, or deemed to be a bad idea.
    • +
    @@ -796,18 +599,9 @@ from the previous release.

    LLVM API changes are:

    @@ -986,7 +780,7 @@ Depending on it for anything serious is not advised.

    -

    LLVM 2.9 will be the last release of llvm-gcc.

    +

    LLVM 3.0 will be the last release of llvm-gcc.

    llvm-gcc is generally very stable for the C family of languages. The only major language feature of GCC not supported by llvm-gcc is the @@ -1041,7 +835,7 @@ lists.

    src="http://www.w3.org/Icons/valid-html401-blue" alt="Valid HTML 4.01"> LLVM Compiler Infrastructure
    - Last modified: $Date: 2011-04-21 03:52:00 +0200 (Thu, 21 Apr 2011) $ + Last modified: $Date: 2011-05-28 00:50:46 +0200 (Sat, 28 May 2011) $ -- cgit v1.1