diff --git a/llvm/docs/ReleaseNotes.html b/llvm/docs/ReleaseNotes.html
index c8c0bd375f8c..ebc0fd7374ac 100644
--- a/llvm/docs/ReleaseNotes.html
+++ b/llvm/docs/ReleaseNotes.html
@@ -66,6 +66,13 @@ It includes many features and refinements from LLVM 2.1.
+
+
Deprecated features in LLVM 2.2
@@ -92,10 +99,10 @@ llvm 2.2, and will be redesigned or removed in llvm 2.3.
LLVM 2.1, llvm-gcc 4.2 was beta). Since LLVM 2.1, the llvm-gcc 4.2 front-end
has made leaps and bounds and is now at least as good as 4.0 in virtually every
area, and is better in several areas (for example, exception handling
-correctness). We strongly recommend that you migrate from llvm-gcc 4.0 to
-llvm-gcc 4.2 in this release cycle because
LLVM 2.2 is the last release
-that will support llvm-gcc 4.0: LLVM 2.3 will only support the llvm-gcc
-4.2 front-end.
+correctness, support for Ada and FORTRAN). We strongly recommend that you
+migrate from llvm-gcc 4.0 to llvm-gcc 4.2 in this release cycle because
+
LLVM 2.2 is the last release that will support llvm-gcc 4.0: LLVM 2.3
+will only support the llvm-gcc 4.2 front-end.
The clang project is an effort to build
a set of new 'llvm native' front-end technologies for the LLVM optimizer
@@ -104,7 +111,7 @@ nicely, and it has advanced source-to-source analysis and transformation
capabilities. If you are interested in building source-level tools for C and
Objective-C (and eventually C++), you should take a look. However, note that
clang is not an official part of the LLVM 2.2 release. If you are interested in
-this project, please see the web site.
+this project, please see its
web site.
@@ -115,51 +122,30 @@ this project, please see the web site.
-
Scott Michel contributed Cell backend
-
-
Dale contributed full support for long double on x86/x86-64 (where it is 80
-bits) and on Darwin PPC/PPC64 (where it is 128 bits).
-
-
Ada, gfortran
-
-
-debug improvements -O0
-
-Gordon: GC Revamp. docs/GarbageCollection.html
-
-Kaleidoscope: docs/tutorial
-
-Gordon: C and Ocaml Bindings
-
-Christopher Lamb: Multiple address spaces.
-
-
-
-
-
-
-
-
Some of the most noticable feature improvements this release have been in the
-optimizer, speeding it up and making it more aggressive. For example:
+
LLVM 2.2 includes several major new capabilities:
+- Scott Michel contributed an SPU backend, which generates code for the
+vector coprocessors on the Cell processor. (Status?)
-- Daniel Berlin and Curtis Dunham rewrote Andersen's alias analysis (which is
-not enabled by default) to be several orders of magnitude faster, implemented
-Offline Variable Substitution and Lazy Cycle Detection.
+- llvm-gcc 4.2 has significantly improved support for the GCC Ada (GNAT) and
+FORTRAN (gfortran) frontends. Duncan has the llvm-gcc 4.2 GNAT front-end
+supporting almost all of the ACATS testsuite (except 2 tests?). The llvm-gcc
+4.2 gfortran front-end supports a broad range of FORTRAN code, but does not support EQUIVALENCE yet.
-Devang: LoopIndexSplit is enabled by default.
+- Dale contributed full support for long double on x86/x86-64 (where it is 80
+bits) and on Darwin PPC/PPC64 (where it is 128 bits). In previous LLVM
+releases, llvm-gcc silently mapped long double to double.
-Dan Gohman: LSR improvements for SSE intrinsics and
+- Gordon rewrote most of the Accurate Garbage
+Collection code in the code generator, making the generated code more
+efficient and adding support for the Ocaml garbage collector metadata
+format.
-Evan added simple exit value substitution to LSR.
-
-Anton added readnone/readonly attributes for modeling function side effects
-and Duncan hooked up GCC's pure/const attributes to use them and enhanced alias
-analysis to use them.
-
+
LLVM now includes a new set of detailed tutorials, which explain how to implement a
+language with LLVM and shows how to use several important APIs.
@@ -170,33 +156,79 @@ analysis to use them.
-
foci of this release was performance tuning and bug
- fixing. In addition to these, several new major changes occurred:
+
We put a significant amount of work into the code generator infrastructure,
+which allows us to implement more aggressive algorithms and make it run
+faster:
-- Owen contributed Machine Loop info, domintors, etc. Merged dom and
- postdom.
+- Owen refactored the existing LLVM dominator and loop information code to
+allow it work on the machine code representation. He contributed support for
+dominator and loop information on machine code and merged the code for forward
+and backward dominator computation.
-- Dan added support for emitting debug information with .file and .loc on
-targets that support it
+- Dan added support for emitting debug information with .file and .loc
+directives on that support it, instead of emitting large tables in the .s
+file.
-- Evan physical register dependencies in the BURR scheduler
+- Evan extended the DAG scheduler to model physical register dependencies
+explicitly and have the BURR scheduler pick a correct schedule based on the
+dependencies. This reduces our use of the 'flag' operand hack.
+
+- Evan added initial support for register coalescing of subregister
+references.
+
+- Rafael Espindola implemented initial support for a new 'byval' attribute,
+which allows more efficient by-value argument passing in the LLVM IR. Evan
+finished support for it and enabled it in the X86 (32- and 64-bit) and C
+backends.
+
+- The LLVM TargetInstrInfo class can now answer queries about the mod/ref and
+side-effect behavior of MachineInstr's. This information is inferred
+automatically by TableGen from .td files for all instructions with
+patterns.
+
+- Evan implemented simple live interval splitting on basic block boundaries.
+This allows the register allocator to be more successful at keeping values in
+registers in some parts of a value's live range, even if they need to be spilled
+in some other block.
+
+- The new MachineRegisterInfo.h class provides support for efficiently
+iterating over all defs/uses of a register, and this information is
+automatically kept up-to-date. This support is similar to the use_iterator in
+the LLVM IR level.
+
+- The MachineInstr, MachineOperand and TargetInstrDesc classes are simpler,
+more consistent, and better documented.
+
+
+
+
+
+
+
+
+
+
In addition to a huge array of bug fixes and minor performance tweaks, LLVM
+2.2 supports a few major enhancements:
+
+
+
+- Daniel Berlin and Curtis Dunham rewrote Andersen's alias analysis to be
+several orders of magnitude faster, implemented Offline Variable Substitution
+and Lazy Cycle Detection. Note that Andersen's is not enabled in llvm-gcc by
+default.
+
+- Dan Gohman contributed several enhancements to Loop Strength Reduction (LSR)
+to make it more aggressive with SSE intrinsics.
+
+- Evan added support for simple exit value substitution to LSR.
-- Evan EXTRACT_SUBREG coalescing support
- Evan enhanced LSR to support induction variable reuse when the induction
- variables have different widths.
+variables have different widths.
-- Rafael Espindola byval support, finished by Evan for x86 (32/64).
-
-- mod/ref info for machineinstrs, inferred from .td files
-
-- Evan: Live interval splitting on MBB boundaries.
-
-Efficient iteration over use/defs of registers like llvm ir.
-
-The MachineInstr, MachineOperand and TargetInstrDesc classes are simpler, more
-consistent, and better documented.
@@ -217,28 +249,11 @@ consistent, and better documented.
Bruno: MIPS PIC support.
Arnold Schwaighofer: X86 tail call support.
Dale darwin/x86-64 and darwin/ppc eh
-Evan: darwin/x86 debug info
+Evan: darwin/x86 debug info, improvements at -O0?
-
-
-
-
-
-
New features include:
-
-
-
-
-
-
-
LLVM Core Improvements
@@ -260,6 +275,13 @@ consistent, and better documented.
Duncan moved parameter attributes off of function type and onto functions
and calls, which makes it much easier to add attributes to a function in a
transformation.
+
Christopher Lamb: Multiple address spaces.
+
Gordon: C and Ocaml Bindings
+
+
Anton added readnone/readonly attributes for modeling function side effects
+and Duncan hooked up GCC's pure/const attributes to use them and enhanced alias
+analysis to use them.
+