diff --git a/docs/ReleaseNotes.html b/docs/ReleaseNotes.html index e152c7f21e4..610de1e4fa1 100644 --- a/docs/ReleaseNotes.html +++ b/docs/ReleaseNotes.html @@ -3,11 +3,11 @@ - LLVM 1.3 Release Notes + LLVM 1.4 Release Notes -
LLVM 1.3 Release Notes
+
LLVM 1.4 Release Notes
  1. Introduction
  2. @@ -41,10 +41,10 @@

    This document contains the release notes for the LLVM compiler -infrastructure, release 1.3. Here we describe the status of LLVM, including any +infrastructure, release 1.4. Here we describe the status of LLVM, including any known problems and bug fixes from the previous release. The most up-to-date version of this document can be found on the LLVM 1.3 web site. If you are +href="http://llvm.cs.uiuc.edu/releases/1.4/">LLVM 1.4 web site. If you are not reading this on the LLVM web pages, you should probably go there because this document may be updated after the release.

    @@ -69,12 +69,7 @@ href="http://llvm.cs.uiuc.edu/releases/">releases page.

    -

    This is the fourth public release of the LLVM compiler infrastructure. This -release primarily improves the performance of the -code produced by all aspects of the LLVM compiler, adds many new features, fixes a few -bugs, speeds up the compiler, and introduces a new (experimental) -PowerPC code generator.

    +

    This is the fifth public release of the LLVM compiler infrastructure.

    At this time, LLVM is known to correctly compile and run all C & C++ SPEC CPU95 & 2000 benchmarks, the Olden benchmarks, and the Ptrdist @@ -91,67 +86,7 @@ with a broad variety of C++ programs.

      -
    1. The LLVM select instruction is -now fully implemented and supported by all transformations, native code -generators, and the interpreter.
    2. -
    3. Bugpoint can now narrow down code-generation bugs to a loop nest, where -before it could only narrow them down to a function being miscompiled.
    4. -
    5. Bugpoint can now debug arbitrary -modes of llc and lli, by passing them command line flags (e.g. --regalloc=linearscan).
    6. -
    7. The Control Flow Graph in the native code generators is no longer -constrained to be the same as the CFG for the LLVM input code.
    8. -
    9. The LLVM induction variable analysis routines have been rewritten.
    10. -
    11. LLVM now has new loop unrolling and loop unswitching passes.
    12. -
    13. The induction variable substitution pass performs linear function test -replacement and exit value replacement optimizations.
    14. -
    15. LLVM now has first-class support for Accurate Garbage Collection, enabling the use -of aggressive copying and generational collectors.
    16. -
    17. LLVM now includes a simple implementation of Andersen's interprocedural alias -analysis algorithm.
    18. -
    19. Bugpoint can extract individual -basic blocks to track down reduce miscompilation testcases.
    20. -
    21. LLVM and the C front-end now work under Win32 using the -Cygwin runtime libraries. -This includes the JIT compiler.
    22. -
    23. The LLVM code generator is now being documented.
    24. -
    25. LLVM includes a new tool, llvm-bcanalyzer, This tool -can compute various statistics and dump information about LLVM bytecode -encoding.
    26. -
    27. The LLVM bytecode file format is now -documented.
    28. -
    29. LLVM now provides an llvm.isunordered intrinsic for efficient -implementation of unordered floating point comparisons.
    30. -
    31. The llvmgcc front-end now supports the GCC builtins for ISO C99 floating -point comparison macros (e.g., __builtin_islessequal).
    32. -
    33. We now generate HTML documentation and man pages -for the tools from a single source (perl-style POD files).
    34. -
    35. The LLVM code generator can now dynamically load targets from shared -objects.
    36. -
    37. LLVM now includes a "skeleton" target, which makes it easier to get -started porting LLVM to new architectures.
    38. -
    39. The linear scan register allocator is now enabled by default in the -target-independent code generator.
    40. -
    41. LLVM now includes a dead store elimination pass.
    42. -
    43. Bugpoint can now debug miscompilations that lead to the program going -into an infinite loop.
    44. -
    45. LLVM now provides interfaces to support ML-style pattern matching on the -LLVM IR.
    46. -
    47. LLVM now includes a context-sensitive mod/ref analysis -for global variables, which is now enabled by default in gccld.
    48. -
    49. LLVM can now autogenerate assembly printers for code generators from the -tablegen description of the target (before they were hand coded).
    50. -
    51. All LLVM tools will now respond to the ---version option which -will tell you the version of LLVM on which the tool is based.
    52. -
    53. An experimental PowerPC backend has been added, capable of compiling several -SPEC benchmarks.
    54. +
    @@ -165,18 +100,8 @@ In this release, the following missing features were implemented: @@ -190,28 +115,7 @@ issues were fixed:
      -
    1. LLVM tools will happily spew -bytecode onto your terminal
    2. -
    3. [llvmgcc] type names are not emitted -for structure typedefs
    4. -
    5. All documentation is now conformant to the HTML 4.01 (Strict) level.
    6. -
    7. The spurious "WARNING: Found global types that are not compatible" warning -produced when linking C++ programs has been fixed.
    8. -
    9. lli Doesn't Handle Exceptions From -Bytecode Reader
    10. -
    11. Global Vars Have (Somewhat) Limited - Type Range
    12. -
    13. operator<< on a Value* now -prints the address of the object instead of its contents.
    14. -
    15. Bytecode Enhancements -Needed
    16. -
    17. [loopsimplify] Loop simplify is -really slow on 252.eon
    18. -
    19. [code-cleanup] SymbolTable class -cleanup, Type should not derive from Value, eliminate ConstantPointerRef -class.
    20. -
    21. The memory footprint of the LLVM IR has been reduced substantially.
    22. -
    23. The LLVM linker and many core classes have been sped up substantially.
    24. +
    @@ -223,14 +127,7 @@ In this release, the following build problems were fixed: @@ -242,51 +139,7 @@ improvements:
      -
    1. Fixed: [vmcore] Code quality problem -due to long operand of getelementptr
    2. - -
    3. The X86 backend now generates substantially better code for 64-bit integer -and floating point operations.
    4. - -
    5. The -inline pass no longer inlines mutually recursive functions until it -hits the inlining threshold.
    6. - -
    7. The -inline pass no longer misses obvious inlining opportunities just -because the callee eventually calls into an external function.
    8. - -
    9. The -simplifycfg pass can now "if convert" simple statements into the -select instruction.
    10. - -
    11. The -loopsimplify pass can now break natural loops with multiple backedges -into multiple nested loops. This enables a variety of subsequent -optimizations.
    12. - -
    13. The -adce pass can now eliminate calls to functions that do not not write to -memory.
    14. - -
    15. The link-time optimizer now runs the -prune-eh pass (to remove unused -exception handlers).
    16. - -
    17. The link-time optimizer now runs dead store elimination and uses a simple -interprocedural alias analysis.
    18. - -
    19. The -simplifycfg pass can now eliminate simple correlated branches (such as -"if (A < B && A < B)", and can turn short-circuiting -operators into the strict versions when useful (such as "if (A < B || A -> C)" into "if (A < B | A > C)"
    20. - -
    21. LLVM now has infrastructure for (simple and sparse conditional) constant -propagation of function calls. It currently supports a few math library -functions like sqrt/sin/cos/etc.
    22. - -
    23. The C backend now emits syntactic -loops in the code to help C compilers whose optimizers do not recognize -loops formed from gotos (like GCC).
    24. - -
    25. The SparcV9 backend no longers spills the null constant to the constant -pool.
    26. +
    @@ -301,38 +154,13 @@ were fixed:

    Bugs fixed in the LLVM Core:

      -
    1. [loopsimplify] Loop simplify -incorrectly updates dominator information
    2. -
    3. [tailduplicate] DemoteRegToStack -breaks SSA form
    4. -
    5. [X86] JIT miscompiles unsigned short -to floating point cast
    6. -
    7. [vmcore] Linker causes erroneous -asssertion
    8. -
    9. [adce] Crash handling unreachable -code that unwinds
    10. -
    11. [sparcv9] LLC can't emit 2 functions -of the same name, both having constant pools
    12. -
    13. [livevar] Live variables missed -physical register use of aliased definition
    14. -
    15. [X86] stackifier crash on floating -point setcc X, X
    16. +

    Bugs in the C/C++ front-end:

      -
    1. [llvmgcc] Variable length array -indexing miscompiled
    2. -
    3. [llvmgcc] Crash on use of undeclared -enum type
    4. -
    5. [llvmgcc] Errors handling function -prototypes that take opaque structs by-value
    6. -
    7. [llvmgcc] Crash compiling variable -length array of structures
    8. -
    9. [llvmgcc] miscompilation of staticly -initialized unsigned bitfields
    10. -
    11. [llvm-gcc] Crash casting function to void
    12. +