aboutsummaryrefslogtreecommitdiffstats
path: root/docs/ReleaseNotes.html
diff options
context:
space:
mode:
authorChris Lattner <sabre@nondot.org>2011-11-27 21:30:28 +0000
committerChris Lattner <sabre@nondot.org>2011-11-27 21:30:28 +0000
commit064caf9f07775e53e724c7213f3d6d132ea66d37 (patch)
tree29fcf00b1ac11fbd945d3d67a6f5fad18b13e771 /docs/ReleaseNotes.html
parentf5a3c426bd27149312eccb981b518ba9186e53dc (diff)
downloadexternal_llvm-064caf9f07775e53e724c7213f3d6d132ea66d37.zip
external_llvm-064caf9f07775e53e724c7213f3d6d132ea66d37.tar.gz
external_llvm-064caf9f07775e53e724c7213f3d6d132ea66d37.tar.bz2
some writing.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@145198 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'docs/ReleaseNotes.html')
-rw-r--r--docs/ReleaseNotes.html100
1 files changed, 57 insertions, 43 deletions
diff --git a/docs/ReleaseNotes.html b/docs/ReleaseNotes.html
index d756fb3..ad4c142 100644
--- a/docs/ReleaseNotes.html
+++ b/docs/ReleaseNotes.html
@@ -753,7 +753,7 @@ be used to verify some algorithms.
llvm/lib/Archive - replace with lib object?
-->
-<p>LLVM 3.0 includes several major changes:</p>
+<p>LLVM 3.0 includes several major changes and big features:</p>
<ul>
<li>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</a> or its talk at the <a
href="http://llvm.org/devmtg/2011-11/">Developer Meeting</a>
for more information.</li>
-<li> New <a href="Atomics.html">atomics</a> instructions, "#i_fence" instruction, cmpxchg, atomicrmw too. What target support (X86/ARM)? Also 'atomic load/store'.
+<li>LLVM IR now includes full support for <a href="Atomics.html">atomics
+ memory operations</a> intended to support the C++'11 and C'1x memory models.
+ This includes <a href="LangRef.html#memoryops">atomic load and store,
+ compare and exchange, and read/modify/write instructions</a> as well as a
+ full set of <a href="LangRef.html#ordering">memory ordering constraints</a>.
+ Please see the <a href="Atomics.html">Atomics Guide</a> for more
+ information.
</li>
<li>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.</li>
+ not yet) and the <a href="ExceptionHandling.html">Exception Handling
+ documentation</a> for more information.</li>
<li>The LLVM IR Type system has been redesigned and reimplemented, making it
faster and solving some long-standing problems.
Please see its <a
@@ -780,13 +787,14 @@ be used to verify some algorithms.
post</a> for more information.</li>
<li>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 <a href="#MIPS">MIPS section</a>
below for more information.</li>
<li>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.</li>
+ 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.</li>
</ul>
</div>
@@ -802,38 +810,28 @@ be used to verify some algorithms.
<p>LLVM IR has several new features for better support of new targets and that
expose new optimization opportunities:</p>
- 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)
-
-</div>
-
-<!--=========================================================================-->
-<h3>
-<a name="loopoptimization">Loop Optimization Improvements</a>
-</h3>
-
-<div>
-<p>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.</p>
-
-<p>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.</p>
+ <ul>
+ <li><a href="Atomics.html">Atomic memory accesses and memory ordering</a> are
+ now directly expressible in the IR.</li>
+ <li>A new <a href="LangRef.html#int_fma">llvm.fma intrinsic</a> directly
+ represents floating point multiply accumulate operations without an
+ intermediate rounding stage.</li>
+ <li>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).</li>
+ <li>The <a href="LangRef.html#int_prefetch">llvm.prefetch intrinsic</a> now
+ takes a 4th argument that specifies whether the prefetch happens from the
+ icache or dcache.</li>
+ <li>The new <a href="LangRef.html#uwtable">uwtable function attribute</a>
+ allows a frontend to control emission of unwind tables.</li>
+ <li>The new <a href="LangRef.html#fnattrs">nonlazybind function
+ attribute</a> allow optimization of Global Offset Table (GOT) accesses.</li>
+ <li>The new <a href="LangRef.html#returns_twice">returns_twice attribute</a>
+ allows better modeling of functions like setjmp.</li>
+ <li>The <a href="LangRef.html#datalayout">target datalayout</a> string can now
+ encode the natural alignment of the target's stack for better optimization.
+ </li>
+ </ul>
</div>
<!--=========================================================================-->
@@ -843,12 +841,14 @@ be used to verify some algorithms.
<div>
-<p>In addition to a large array of minor performance tweaks and bug fixes, this
+<p>In addition to many minor performance tweaks and bug fixes, this
release includes a few major enhancements and additions to the
optimizers:</p>
<ul>
- Pass manager extension API.
+<li>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.</li>
<li>Information about <a href="BranchWeightMetadata.html">branch probability</a>
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.</li>
-
- ARC language specific optimizer (Transforms/ObjCARC) a decent example of language-specific transformation.
-
+<li>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.</li>
+
+<li>LLVM now includes a pass to optimize retain/release calls for the
+ <a href="http://clang.llvm.org/docs/AutomaticReferenceCounting.html">Automatic
+ Reference Counting</a> (ARC) Objective-C language feature (in
+ lib/Transforms/ObjCARC). It is a decent example of implementing a
+ source-language-specific optimization in LLVM.</li>
+
</ul>
</div>