diff --git a/docs/ReleaseNotes.html b/docs/ReleaseNotes.html index 1b44ac553cb..038df8713ff 100644 --- a/docs/ReleaseNotes.html +++ b/docs/ReleaseNotes.html @@ -3,12 +3,12 @@ - LLVM 1.1 Release Notes + LLVM 1.2 Release Notes
- LLVM 1.1 Release Notes + LLVM 1.2 Release Notes
    @@ -42,10 +42,10 @@

    This document contains the release notes for the LLVM compiler -infrastructure, release 1.1. Here we describe the status of LLVM, including any +infrastructure, release 1.2. 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.1 web site. If you are +href="http://llvm.cs.uiuc.edu/releases/1.2/">LLVM 1.2 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.

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

    -

    This is the second public release of the LLVM compiler infrastructure. This -release is primarily a bugfix release, dramatically improving the C/C++ -front-end, and improving support for C++ in the LLVM core. This release also -includes a few new features, such as a simple profiler, support for Mac OS/X, -better interoperability with external source bases, a new example language -front-end, and improvements in a few optimizations.

    +

    This is the third public release of the LLVM compiler infrastructure. OTHER +OVERVIEW STUFF HERE. +

    At this time, LLVM is known to correctly compile and run all non-unwinding C & C++ SPEC CPU2000 benchmarks, the Olden benchmarks, and the Ptrdist @@ -100,58 +97,8 @@ This release implements the following new features:

      -
    1. A new -LLVM profiler, similar to gprof is available
    2. - -
    3. LLVM and the C/C++ front-end now compile on Mac OS/X! Mac OS/X users can -now explore the LLVM optimizer with the C backend and interpreter. Note that -LLVM requires GCC 3.3 on Mac OS/X.
    4. - -
    5. LLVM has been moved -into an 'llvm' C++ namespace, for easier integration with third-party -code. Note that due to lack of namespace support in GDB 5.x, you will probably -want to upgrade to GDB 6 or better to debug LLVM code.
    6. - -
    7. -The build system now copies Makefiles dynamically from the source tree to the -object tree as subdirectories are built. This means that: -
        -
      1. - New directories can be added to the source tree, and the build will - automatically pick them up (i.e. no need to re-run configure). -
      2. - -
      3. - You will need to build LLVM from the top of the object tree once to ensure - that all of the Makefiles are copied into the object tree subdirectories. -
      4. -
      -
    8. - -
    9. A front-end for "Stacker" (a simple Forth-like language) is now - included in the main LLVM tree. - Additionally, Reid Spencer, the author, contributed a document describing his experiences writing Stacker, and the language itself. This document is invaluable for others writing front-ends targetting LLVM.
    10. - -
    11. The configure script will now configure all projects placed in the -llvm/projects directory.
    12. - -
    13. The -tailcallelim pass can now introduce "accumulator" variables - to transform functions in many common cases that it could not before.
    14. - -
    15. The -licm pass can now sink instructions out the bottom of loops -in addition to being able to hoist them out the top.
    16. - -
    17. The -basicaa pass (the default alias analysis) has been upgraded -to be significantly more -precise.
    18. - -
    19. LLVM 1.1 implements a simple size optimization for LLVM bytecode files. - This means that the 1.1 files are smaller than 1.0, but that 1.0 won't - read 1.1 bytecode files.
    20. - -
    21. The gccld program produces a runner script that includes command-line options to load the necessary shared objects.
    22. +
    23. +
    @@ -161,17 +108,8 @@ In this release, the following missing features were implemented:
      -
    1. The interpreter does not support -invoke or unwind
    2. - -
    3. Interpreter does not support the -vaarg instruction
    4. - -
    5. llvm-nm cannot read archive -files
    6. - -
    7. Interpreter does not handle -setne constant expression
    8. +
    9. +
    @@ -183,37 +121,9 @@ fixed:
      -
    1. The C++ front-end now compiles functions to - use the linkonce linkage type - more, giving the optimizer more freedom.
    2. +
    3. -
    4. The C front-end now generates - type-safe code in several cases that it did not before, which prevented - some important optimizations.
    5. - -
    6. The LLVM build system has been taught to catch some common configuration - problems that caused it to get - horribly confused before.
    7. - -
    8. The LLVM header files are now - -Wold-style-cast clean.
    9. - -
    10. The LLVM bytecode reader has been sped up a lot (up to 4x in some -cases).
    11. - -
    12. In C++, methods and functions in anonymous namespaces now get internal linkage.
    13. - -
    14. Constant initializers now generate loops instead of potentially huge amounts of straight-line code.
    15. - -
    16. Code for running C++ destructors is now properly shared when possible. Before, the C++ front-end -generated N^2 amounts of duplicated cleanup code in some cases.
    17. - -
    18. The JIT used to generate code for - all functions pointed to by globals immediately, before the program - started execution, but now it waits until the first time they are called to - compile them. This dramatically speeds up short runs of large C++ programs, - which often have large numbers of functions pointed to by vtables.
    19. +
    @@ -225,70 +135,16 @@ In this release, the following bugs in the previous release were fixed:

    Bugs in the LLVM Core:

      -
    1. [inliner] Inlining invoke with PHI in unwind target is broken
    2. -
    3. [linker] linkonce globals should link successfully to external globals
    4. -
    5. [constmerge] Constant merging pass merges constants with external linkage
    6. -
    7. [scalarrepl] Scalar Replacement of aggregates is decimating structures it shouldn't be
    8. -
    9. [instcombine] Resolving invoke inserts cast after terminator
    10. -
    11. llvm-as crashes when labels are used in phi nodes
    12. -
    13. [build problem] Callgraph.cpp not pulled in from libipa.a
    14. -
    15. Variables in scope of output setjmp -calls should be volatile (Note that this does not effect correctness on -many platforms, such as X86).
    16. -
    17. [X86] Emission of global bool initializers broken
    18. -
    19. [gccld] The -r (relinking) option does not work correctly
    20. -
    21. [bcreader] Cannot read shift constant expressions from bytecode file
    22. -
    23. [lowersetjmp] Lowersetjmp pass breaks dominance properties!
    24. -
    25. SymbolTable::getUniqueName is very inefficient
    26. -
    27. bugpoint must not pass -R<directory> to Mach-O linker
    28. -
    29. [buildscripts] Building into objdir with .o in it fails
    30. -
    31. [setjmp/longjmp] Linking C programs which use setjmp/longjmp sometimes fail with references to the C++ runtime library!
    32. -
    33. AsmParser Misses Symbol Redefinition Error
    34. -
    35. gccld -Lfoo -lfoo fails to find ./foo/libfoo.a
    36. -
    37. [bcreader] Incorrect cast causes misread forward constant references
    38. -
    39. [adce] ADCE considers blocks without postdominators to be unreachable
    40. -
    41. [X86] div and rem constant exprs invalidate iterators!
    42. -
    43. [vmcore] Symbol table doesn't rename colliding variables during type resolution
    44. -
    45. Archive reader does not understand 4.4BSD/Mac OS X long filenames
    46. -
    47. [llvm-ar] Command line arguments have funny syntax
    48. +
    49. [licm] LICM promotes volatile memory locations to registers
    50. +

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

      -
    1. C++ frontend can crash when compiling virtual base classes
    2. -
    3. C backend fails on constant cast expr to ptr-to-anonymous struct
    4. -
    5. #ident is not recognized by C frontend
    6. -
    7. C front-end miscompiles the builtin_expect intrinsic!
    8. -
    9. 1.0 precompiled libstdc++ does not include wchar_t support
    10. -
    11. llvmgcc asserts when compiling functions renamed with asm's
    12. -
    13. C frontend crashes on some programs with lots of types.
    14. -
    15. llvm-gcc crashes compiling global union initializer
    16. -
    17. C front-end crash on empty structure
    18. -
    19. CFrontend crashes when compiling C99 compound expressions
    20. -
    21. llvm-gcc infinite loops on "case MAXINT:"
    22. -
    23. [C++] Catch blocks make unparsable labels
    24. -
    25. [C++] Initializing array with constructable objects fail
    26. -
    27. llvm-gcc tries to add bools
    28. -
    29. [c++] C++ Frontend lays out superclasses like anonymous bitfields!
    30. -
    31. C front-end miscompiles unsigned enums whose LLVM types are signed
    32. -
    33. Casting a string constant to void crashes llvm-gcc
    34. -
    35. [llvmg++] Enum types are incorrectly shrunk to smaller than 'int' size
    36. -
    37. [llvmg++] Cannot use pointer to member to initialize global
    38. -
    39. [llvm-gcc] ?: operator as lvalue not implemented
    40. -
    41. [C/C++] Bogus warning about taking the address of 'register' variable
    42. -
    43. crash assigning into an array in a struct which contains a bitfield.
    44. -
    45. Oversized integer bitfields cause crash
    46. -
    47. [llvm-gcc] Bitfields & large array don't mix well
    48. -
    49. [llvm-gcc] Complex division is not supported
    50. -
    51. [llvm-gcc] Illegal union field reference
    52. -
    53. [llvmg++] Front-end attempts to return structure by value
    54. -
    55. [llvmg++] Pointer to member initializers not supported in constructors
    56. -
    57. [llvm-gcc] crash on union initialization
    58. -
    59. [llvm-g++] ?: expressions do not run correct number of destructors!
    60. -
    61. [llvm-gcc] Pointer & constant results in invalid shift
    62. -
    63. [llvmg++] call through array of pointers to member functions causes assertion
    64. +
    65. +
    @@ -302,7 +158,7 @@ many platforms, such as X86).

    LLVM has been extensively tested on Intel and AMD machines running Red -Hat Linux and has been tested on Sun UltraSPARC workstations running Solaris 8. +Hat Linux and FreeBSD. It has also been tested on Sun UltraSPARC workstations running Solaris 8. Additionally, LLVM works on Mac OS/X 10.3 and above, but only with the C backend or interpreter (no native backend for the PowerPC is available yet). @@ -369,9 +225,7 @@ more than 256 elements.

    -
    - Bugs -
    +
    Bugs