X-Git-Url: http://plrg.eecs.uci.edu/git/?a=blobdiff_plain;f=docs%2FReleaseNotes.html;h=1ab2b709f58cfbb78b3555b5fa04e4fa45812de4;hb=ead66027e8a93dbbb9eec37807c34585aeafe67b;hp=367f6cb6ba216e69b805f139f20445b8a2bc17fe;hpb=e9a73bbdd7f5667d76c424a3ea7a20ae0cace601;p=oota-llvm.git diff --git a/docs/ReleaseNotes.html b/docs/ReleaseNotes.html index 367f6cb6ba2..1ab2b709f58 100644 --- a/docs/ReleaseNotes.html +++ b/docs/ReleaseNotes.html @@ -4,11 +4,11 @@ - LLVM 3.1 Release Notes + LLVM 3.2 Release Notes -

LLVM 3.1 Release Notes

+

LLVM 3.2 Release Notes

  • Introduction
  • Sub-project Status Update
  • -
  • External Projects Using LLVM 3.1
  • +
  • External Projects Using LLVM 3.2
  • What's New in LLVM?
  • Installation Instructions
  • Known Problems
  • @@ -29,10 +29,10 @@

    Written by the LLVM Team

    -

    These are in-progress notes for the upcoming LLVM 3.1 +

    These are in-progress notes for the upcoming LLVM 3.2 release.
    You may prefer the -LLVM 3.0 +LLVM 3.1 Release Notes.

    @@ -44,11 +44,11 @@ Release Notes.

    This document contains the release notes for the LLVM Compiler - Infrastructure, release 3.1. Here we describe the status of LLVM, including + Infrastructure, release 3.2. Here we describe the status of LLVM, including major improvements from the previous release, improvements in various - subprojects of LLVM, and some of the current users of the code. - All LLVM releases may be downloaded from - the LLVM releases web site.

    + subprojects of LLVM, and some of the current users of the code. 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 web @@ -72,11 +72,11 @@ Release Notes.

    -

    The LLVM 3.1 distribution currently consists of code from the core LLVM - repository (which roughly includes the LLVM optimizers, code generators and - supporting tools), and the Clang repository. In - addition to this code, the LLVM Project includes other sub-projects that are - in development. Here we include updates on these subprojects.

    +

    The LLVM 3.2 distribution currently consists of code from the core LLVM + repository, which roughly includes the LLVM optimizers, code generators and + supporting tools, and the Clang repository. In addition to this code, the + LLVM Project includes other sub-projects that are in development. Here we + include updates on these subprojects.

    @@ -94,23 +94,15 @@ Release Notes.

    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 3.1 time-frame, the Clang team has made many improvements. +

    In the LLVM 3.2 time-frame, the Clang team has made many improvements. Highlights include:

    -

    For more details about the changes to Clang since the 3.0 release, see the -Clang release notes -

    - +

    For more details about the changes to Clang since the 3.1 release, see the + Clang release + notes.

    If Clang rejects your code but another compiler accepts it, please take a look at the language @@ -125,6 +117,7 @@ Release Notes.

    +

    DragonEgg is a gcc plugin that replaces GCC's optimizers and code generators with LLVM's. It works with gcc-4.5 and gcc-4.6 @@ -133,25 +126,10 @@ Release Notes. Linux and OpenBSD platforms. It fully supports Ada, C, C++ and Fortran. It has partial support for Go, Java, Obj-C and Obj-C++.

    -

    The 3.1 release has the following notable changes:

    - -
      - -
    • Partial support for gcc-4.7. Ada support is poor, but other languages work - fairly well.
    • - -
    • Support for ARM processors. Some essential gcc headers that are needed to - build DragonEgg for ARM are not installed by gcc. To work around this, - copy the missing headers from the gcc source tree.
    • - -
    • Better optimization for Fortran by exploiting the fact that Fortran scalar - arguments have 'restrict' semantics.
    • - -
    • Better optimization for all languages by passing information about type - aliasing and type ranges to the LLVM optimizers.
    • - -
    • A regression test-suite was added.
    • +

      The 3.2 release has the following notable changes:

      +
        +
      • ...
    @@ -168,11 +146,15 @@ Release Notes. target-specific hooks required by code generation and other runtime components. For example, when compiling for a 32-bit target, converting a double to a 64-bit unsigned integer is compiled into a runtime call to the - "__fixunsdfdi" 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).

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

    + +

    The 3.2 release has the following notable changes:

    -

    ....

    +
    @@ -189,7 +171,11 @@ Release Notes. expression parsing (particularly for C++) and uses the LLVM JIT for target support.

    -

    ...

    +

    The 3.2 release has the following notable changes:

    + +
    @@ -204,7 +190,11 @@ Release Notes. licensed under the MIT and UIUC license, allowing it to be used more permissively.

    -

    ...

    +

    Within the LLVM 3.2 time-frame there were the following highlights:

    + + @@ -215,16 +205,15 @@ Release Notes.
    -

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

    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.

    -

    In the LLVM 3.1 time-frame, VMKit has had significant improvements on both - runtime and startup performance:

    +

    The 3.2 release has the following notable changes:

    -
    @@ -236,25 +225,17 @@ Release Notes.
    -

    Polly is an experimental +

    Polly is an experimental optimizer for data locality and parallelism. It currently provides high-level loop optimizations and automatic parallelisation (using the OpenMP run time). Work in the area of automatic SIMD and accelerator code generation was - started. - -

    Within the LLVM 3.1 time-frame there were the following highlights:

    - - + started.

    + +

    Within the LLVM 3.2 time-frame there were the following highlights:

    + +
    @@ -262,15 +243,27 @@ Release Notes.

    - External Open Source Projects Using LLVM 3.1 + External Open Source Projects Using LLVM 3.2

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

    + a lot of other language and tools projects. This section lists some of the + projects that have already been updated to work with LLVM 3.2.

    + +

    Crack

    + +
    + +

    Crack aims to provide + the ease of development of a scripting language with the performance of a + compiled language. The language derives concepts from C++, Java and Python, + incorporating object-oriented programming, operator overloading and strong + typing.

    + +

    FAUST

    @@ -402,14 +395,14 @@ Release Notes.

    - What's New in LLVM 3.1? + What's New in LLVM 3.2?

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

    @@ -419,13 +412,13 @@ Release Notes.
    - @@ -436,18 +429,10 @@ Release Notes. llvm/lib/Archive - replace with lib object? --> -

    LLVM 3.1 includes several major changes and big features:

    +

    LLVM 3.2 includes several major changes and big features:

    @@ -463,22 +448,12 @@ Release Notes.

    LLVM IR has several new features for better support of new targets and that expose new optimization opportunities:

    - + +
    @@ -488,23 +463,11 @@ Release Notes.
    -

    In addition to many minor performance tweaks and bug fixes, this - release includes a few major enhancements and additions to the - optimizers:

    +

    In addition to many minor performance tweaks and bug fixes, this release + includes a few major enhancements and additions to the optimizers:

    @@ -519,15 +482,12 @@ Release Notes.

    The LLVM Machine Code (aka MC) subsystem was created to solve a number of problems in the realm of assembly, disassembly, object file format handling, and a number of other related areas that CPU instruction-set level tools work - in. For more information, please see - the Intro - to the LLVM MC Project Blog Post.

    + in. For more information, please see the + Intro + to the LLVM MC Project Blog Post.

    @@ -552,21 +512,7 @@ Release Notes. make it run faster:

    We added new TableGen infrastructure to support bundling for @@ -583,11 +529,14 @@ Release Notes.

    Basic Block Placement

    +
    +

    A probability based block placement and code layout algorithm was added to -LLVM's code generator. This layout pass supports probabilities derived from -static heuristics as well as source code annotations such as -__builtin_expect.

    + LLVM's code generator. This layout pass supports probabilities derived from + static heuristics as well as source code annotations such as + __builtin_expect.

    +
    @@ -600,14 +549,7 @@ static heuristics as well as source code annotations such as

    New features and major changes in the X86 target include:

    @@ -622,30 +564,33 @@ static heuristics as well as source code annotations such as

    New features of the ARM target include:

    + +

    ARM Integrated Assembler

    +
    +

    The ARM target now includes a full featured macro assembler, including -direct-to-object module support for clang. The assembler is currently enabled -by default for Darwin only pending testing and any additional necessary -platform specific support for Linux.

    + direct-to-object module support for clang. The assembler is currently enabled + by default for Darwin only pending testing and any additional necessary + platform specific support for Linux.

    Full support is included for Thumb1, Thumb2 and ARM modes, along with -subtarget and CPU specific extensions for VFP2, VFP3 and NEON.

    + subtarget and CPU specific extensions for VFP2, VFP3 and NEON.

    The assembler is Unified Syntax only (see ARM Architecural Reference Manual -for details). While there is some, and growing, support for pre-unfied (divided) -syntax, there are still significant gaps in that support.

    + for details). While there is some, and growing, support for pre-unfied + (divided) syntax, there are still significant gaps in that support.

    +
    +

    MIPS Target Improvements @@ -653,26 +598,11 @@ syntax, there are still significant gaps in that support.

    -

    This release has seen major new work on just about every aspect of the MIPS - backend. Some of the major new features include:

    +

    New features and major changes in the MIPS target include:

    -
    - - -

    -PTX Target Improvements -

    - -
    - -

    An outstanding conditional inversion bug was fixed in this release.

    - -

    NOTE: LLVM 3.1 marks the last release of the PTX back-end, in its - current form. The back-end is currently being replaced by the NVPTX - back-end, currently in SVN ToT.

    @@ -683,12 +613,8 @@ syntax, there are still significant gaps in that support.

    -

    Support for Qualcomm's Hexagon VLIW processor has been added.

    -
    @@ -701,26 +627,11 @@ syntax, there are still significant gaps in that support.

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

    @@ -736,40 +647,7 @@ syntax, there are still significant gaps in that support.

    LLVM API changes are:

    @@ -784,14 +662,8 @@ syntax, there are still significant gaps in that support.

    In addition, some tools have changed in this release. Some of the changes are:

    - @@ -805,19 +677,12 @@ syntax, there are still significant gaps in that support.

    Officially supported Python bindings have been added! Feature support is far -from complete. The current bindings support interfaces to:

    + from complete. The current bindings support interfaces to:

    + -

    Using the Object File Interface, it is possible to inspect binary object files. -Think of it as a Python version of readelf or llvm-objdump.

    - -

    Support for additional features is currently being developed by community -contributors. If you are interested in shaping the direction of the Python -bindings, please express your intent on IRC or the developers list.

    -
    @@ -833,11 +698,11 @@ bindings, please express your intent on IRC or the developers list.

    LLVM is generally a production quality compiler, and is used by a broad range of applications and shipping in many products. That said, not every subsystem is as mature as the aggregate, particularly the more obscure - targets. If you run into a problem, please check the LLVM bug database and submit a bug if - there isn't already one or ask on the LLVMdev - list.

    + targets. If you run into a problem, please check + the LLVM bug database and submit a bug if + there isn't already one or ask on + the LLVMdev + list.

    Known problem areas include:

    @@ -845,7 +710,7 @@ bindings, please express your intent on IRC or the developers list.

  • The CellSPU, MSP430, PTX and XCore backends are experimental.
  • The integrated assembler, disassembler, and JIT is not supported by - several targets. If an integrated assembler is not supported, then a + several targets. If an integrated assembler is not supported, then a system assembler is required. For more details, see the Target Features Matrix.