X-Git-Url: http://demsky.eecs.uci.edu/git/?a=blobdiff_plain;f=docs%2FReleaseNotes.html;h=56dd66a21aa53860577177cb78dd5c89a3456dc3;hb=933e51c5e3b9db7b0deebcbca387c86cb3b7cb3b;hp=c63f6f48f8fa8e8279dbe596f770e3758d69b311;hpb=fd0d22e638e27c0c78f1d251e88df889d85e25e6;p=oota-llvm.git diff --git a/docs/ReleaseNotes.html b/docs/ReleaseNotes.html index c63f6f48f8f..56dd66a21aa 100644 --- a/docs/ReleaseNotes.html +++ b/docs/ReleaseNotes.html @@ -101,12 +101,20 @@ It includes a large number of features and refinements from LLVM 2.2.

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.
  • + 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.
  • @@ -153,9 +161,9 @@ specific virtual machine optimizations. vmkit is not an official part of LLVM downloaded from:

    -

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

    +
    +
    svn co http://llvm.org/svn/llvm-project/vmkit/trunk vmkit
    +
    @@ -178,7 +186,7 @@ front-end work has started to make significant progress.

    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 is automatically focused on finding +analysis tool in development. This tool focuses on automatically finding bugs in C and Objective-C code.

    @@ -190,6 +198,14 @@ bugs in C and Objective-C code.

    +
    + +

    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 @@ -219,7 +235,7 @@ bugs in C and Objective-C code.

    llvmc and to provide a superset of the features of the 'gcc' driver.

    -

    The main features of llvmc2 are: +

    The main features of llvmc2 are:

    - + +
  • LLVM 2.3 includes a completely rewritten interface for Link Time Optimization. This interface @@ -256,15 +272,21 @@ bugs in C and Objective-C code.

    -

    LLVM 2.3 fully supports the 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.

    -

    llvm-gcc 4.2 includes numerous fixes to better support the Objective-C -front-end. Objective-C now works very well on Mac OS/X.

    +

    +

      +
    • llvm-gcc 4.2 includes numerous fixes to better support the Objective-C +front-end. Objective-C now works very well on Mac OS/X.
    • -

      Fortran EQUIVALENCEs are now supported by the gfortran front-end.

      +
    • Fortran EQUIVALENCEs are now supported by the gfortran +front-end.
    • -

      llvm-gcc 4.2 includes many other fixes which improve conformance with the -relevant parts of the GCC testsuite.

      +
    • llvm-gcc 4.2 includes many other fixes which improve conformance with the +relevant parts of the GCC testsuite.
    • + +
    @@ -278,16 +300,18 @@ relevant parts of the GCC testsuite.

    New features include:

    +
  • @@ -304,23 +328,31 @@ LLVM 2.3 optimizers support a few major enhancements:

    @@ -372,18 +406,20 @@ faster:

    both pre-pass and post-pass scheduling, and to improve compiler-debugging output. -
  • The target-independent code generator infrastructure now uses LLVM's APInt +
  • The target-independent code generator infrastructure now uses LLVM's + APInt class to handle integer values, which allows it to support integer types - larger than 64 bits. Note that support for such types is also dependent on - target-specific support. Use of APInt is also a step toward support for - non-power-of-2 integer sizes.
  • + larger than 64 bits (for example i128). Note that support for such types is + also dependent on target-specific support. Use of APInt is also a step + toward support for non-power-of-2 integer sizes.
  • LLVM 2.3 includes several compile time speedups for code with large basic blocks, particularly in the instruction selection phase, register allocation, scheduling, and tail merging/jump threading.
  • -
  • Several improvements which make llc's --view-sunit-dags - visualization of scheduling dependency graphs easier to understand.
  • +
  • LLVM 2.3 includes several improvements which make llc's + --view-sunit-dags visualization of scheduling dependency graphs + easier to understand.
  • The code generator allows targets to write patterns that generate subreg references directly in .td files now.
  • @@ -398,9 +434,10 @@ faster:

    'i' form when possible instead of always loading the value in a register. This saves an instruction and reduces register use. -
  • Added support for PIC/GOT style tail calls on x86/32 and initial support - for tail calls on PowerPC 32 (it may also work on ppc64 but not - thoroughly tested).
  • +
  • Added support for PIC/GOT style tail calls on X86/32 and initial + support for tail calls on PowerPC 32 (it may also work on PowerPC 64 but is + not thoroughly tested).
  • @@ -421,7 +458,7 @@ faster:

    now interoperates very well on X86-64 systems with other compilers.
  • Support for Win64 was added. This includes code generation itself, JIT - support and necessary changes to llvm-gcc.
  • + support, and necessary changes to llvm-gcc.
  • The LLVM X86 backend now supports the support SSE 4.1 instruction set, and the llvm-gcc 4.2 front-end supports the SSE 4.1 compiler builtins. Various @@ -432,10 +469,13 @@ faster:

  • The X86 backend now does a number of optimizations that aim to avoid converting numbers back and forth from SSE registers to the X87 floating - point stack.
  • + point stack. This is important because most X86 ABIs require return values + to be on the X87 Floating Point stack, but most CPUs prefer computation in + the SSE units.
  • The X86 backend supports stack realignment, which is particularly useful for - vector code on OS's without 16-byte aligned stacks.
  • + vector code on OS's without 16-byte aligned stacks, such as Linux and + Windows.
  • The X86 backend now supports the "sseregparm" options in GCC, which allow functions to be tagged as passing floating point values in SSE @@ -447,9 +487,11 @@ faster:

  • __builtin_prefetch is now compiled into the appropriate prefetch instructions instead of being ignored.
  • -
  • 128-bit integers are now supported on X86-64 targets.
  • +
  • 128-bit integers are now supported on X86-64 targets. This can be used + through __attribute__((TImode)) in llvm-gcc.
  • -
  • The register allocator can now rematerialize PIC-base computations.
  • +
  • The register allocator can now rematerialize PIC-base computations, which is + an important optimization for register use.
  • The "t" and "f" inline assembly constraints for the X87 floating point stack now work. However, the "u" constraint is still not fully supported.
  • @@ -469,6 +511,8 @@ faster:

    @@ -579,7 +623,13 @@ href="http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev">LLVMdev list.

    expect small issues to happen. Also, llvm-gcc cannot build mingw64 runtime currently due to several - bugs in FP stackifier + bugs due to lack of support for the + 'u' inline assembly constraint and X87 floating point inline assembly. +
  • The X86-64 backend does not yet support position-independent code (PIC) + generation on Linux targets.
  • +
  • The X86-64 backend does not yet support the LLVM IR instruction + va_arg. Currently, the llvm-gcc front-end supports variadic + argument constructs on X86-64 by lowering them manually.
  • @@ -655,25 +705,9 @@ appropriate nops inserted to ensure restartability.
    @@ -702,9 +736,6 @@ programs. Known problems with the llvm-gcc C front-end - -
    Bugs
    -

    llvm-gcc does not currently support Link-Time