diff --git a/llvm/docs/ReleaseNotes.html b/llvm/docs/ReleaseNotes.html
index d756fb3576ec..ad4c14294a81 100644
--- a/llvm/docs/ReleaseNotes.html
+++ b/llvm/docs/ReleaseNotes.html
@@ -753,7 +753,7 @@ be used to verify some algorithms.
llvm/lib/Archive - replace with lib object?
-->
-
LLVM 3.0 includes several major changes:
+LLVM 3.0 includes several major changes and big features:
- llvm-gcc is no longer supported, and not included in the release. We
@@ -767,12 +767,19 @@ be used to verify some algorithms.
href="http://blog.llvm.org/2011/09/greedy-register-allocation-in-llvm-30.html">blog post or its talk at the Developer Meeting
for more information.
-- New atomics instructions, "#i_fence" instruction, cmpxchg, atomicrmw too. What target support (X86/ARM)? Also 'atomic load/store'.
+
- LLVM IR now includes full support for atomics
+ memory operations intended to support the C++'11 and C'1x memory models.
+ This includes atomic load and store,
+ compare and exchange, and read/modify/write instructions as well as a
+ full set of memory ordering constraints.
+ Please see the Atomics Guide for more
+ information.
- The LLVM IR exception handling representation has been redesigned and
reimplemented, making it more elegant, fixing a huge number of bugs, and
enabling inlining and other optimizations. Please see its blog post (XXX
- not yet) for more information.
+ not yet) and the Exception Handling
+ documentation for more information.
- The LLVM IR Type system has been redesigned and reimplemented, making it
faster and solving some long-standing problems.
Please see its for more information.
- The MIPS backend has made major leaps in this release, going from an
- experimental target to being virtually production quality that supports a
+ experimental target to being virtually production quality and supporting a
wide variety of MIPS subtargets. See the MIPS section
below for more information.
- The optimizer and code generator now supports gprof and gcov-style coverage
- and profiling information, and includes a new llvm-cov tool. Clang exposes
- this through GCC-compatible command line options.
+ and profiling information, and includes a new llvm-cov tool (but also works
+ with gcov). Clang exposes coverage and profiling through GCC-compatible
+ command line options.
@@ -802,38 +810,28 @@ be used to verify some algorithms.
LLVM IR has several new features for better support of new targets and that
expose new optimization opportunities:
- New llvm.expect intrinsic.
- New llvm.fma intrinsic.
-
- LangRef.html#fnattrs uwtable attribute for asynch unwind tables.
- llvm.prefetch now takes a 4th argument that specifies whether the prefetch happens to the icache or dcache.
- New nonlazybind function attribute.
- data layout string can encode the natural alignment of the target's stack for better optimization (LangRef.html#datalayout)
- returns_twice attribute (rafael)
-
-
-
-
-
-
-
-
The induction variable simplification pass in 3.0 only modifies
- induction variables when profitable. Sign and zero extension
- elimination, linear function test replacement, loop unrolling, and
- other simplifications that require induction variable analysis have
- been generalized so they no longer require loops to be rewritten in a
- typically suboptimal form prior to optimization. This new design
- preserves more IR level information, avoids undoing earlier loop
- optimizations (particularly hand-optimized loops), and no longer
- strongly depends on the code generator rewriting loops a second time
- in a now optimal form--an intractable problem.
-
-
The original behavior can be restored with -mllvm -enable-iv-rewrite;
- however, support for this mode will be short lived. As such, bug
- reports should be filed for any significant performance regressions
- when moving from -mllvm -enable-iv-rewrite to the 3.0 default mode.
+
+ - Atomic memory accesses and memory ordering are
+ now directly expressible in the IR.
+ - A new llvm.fma intrinsic directly
+ represents floating point multiply accumulate operations without an
+ intermediate rounding stage.
+ - A new llvm.expect intrinsic (XXX not documented in langref) allows a
+ frontend to express expected control flow (and the __builtin_expect builtin
+ from GNU C).
+ - The llvm.prefetch intrinsic now
+ takes a 4th argument that specifies whether the prefetch happens from the
+ icache or dcache.
+ - The new uwtable function attribute
+ allows a frontend to control emission of unwind tables.
+ - The new nonlazybind function
+ attribute allow optimization of Global Offset Table (GOT) accesses.
+ - The new returns_twice attribute
+ allows better modeling of functions like setjmp.
+ - The target datalayout string can now
+ encode the natural alignment of the target's stack for better optimization.
+
+
@@ -843,12 +841,14 @@ be used to verify some algorithms.
-
In addition to a large array of minor performance tweaks and bug fixes, this
+
In addition to many minor performance tweaks and bug fixes, this
release includes a few major enhancements and additions to the
optimizers:
- Pass manager extension API.
+- The pass manager now has an extension API that allows front-ends and plugins
+ to insert their own optimizations in the well-known places in the standard
+ pass optimization pipeline.
- Information about branch probability
and basic block frequency is now available within LLVM, based on a
@@ -857,10 +857,24 @@ be used to verify some algorithms.
register spill placement and if-conversion, with additional optimizations
planned for future releases. The same framework is intended for eventual
use with profile-guided optimization.
-
- ARC language specific optimizer (Transforms/ObjCARC) a decent example of language-specific transformation.
-
+- The "-indvars" induction variable simplification pass only modifies
+ induction variables when profitable. Sign and zero extension
+ elimination, linear function test replacement, loop unrolling, and
+ other simplifications that require induction variable analysis have
+ been generalized so they no longer require loops to be rewritten into
+ canonical form prior to optimization. This new design
+ preserves more IR level information, avoids undoing earlier loop
+ optimizations (particularly hand-optimized loops), and no longer
+ requires the code generator to reconstruct loops into an optimal form -
+ an intractable problem.
+
+- LLVM now includes a pass to optimize retain/release calls for the
+ Automatic
+ Reference Counting (ARC) Objective-C language feature (in
+ lib/Transforms/ObjCARC). It is a decent example of implementing a
+ source-language-specific optimization in LLVM.
+