<h1>LLVM 3.0 Release Notes</h1>
-<img align=right src="http://llvm.org/img/DragonSmall.png"
- width="136" height="136" alt="LLVM Dragon Logo">
+<div>
+<img style="float:right" src="http://llvm.org/img/DragonSmall.png"
+ width="136" height="136" alt="LLVM Dragon Logo">
+</div>
<ol>
<li><a href="#intro">Introduction</a></li>
production-quality compiler for C, Objective-C, C++ and Objective-C++ on x86
(32- and 64-bit), and for Darwin/ARM targets.</p>
-<p>In the LLVM 3.0 time-frame, the Clang team has made many improvements:
+<p>In the LLVM 3.0 time-frame, the Clang team has made many improvements:</p>
<ul>
<li>Greatly improved support for building C++ applications, with greater
stability and better diagnostics.</li>
interface, to improve the performance of code completion and the mapping
from source locations to abstract syntax tree nodes.</li>
</ul>
-For more details about the changes to Clang since the 2.9 release, see the
+<p>For more details about the changes to Clang since the 2.9 release, see the
<a href="http://clang.llvm.org/docs/ReleaseNotes.html">Clang release notes</a>
</p>
<li>The <tt>-fplugin-arg-dragonegg-enable-gcc-optzns</tt> option, which runs
GCC's optimizers as well as LLVM's, now works much better. This is the
option to use if you want ultimate performance! It is still experimental
- though: it may cause the plugin to crash.</li>
+ though: it may cause the plugin to crash. Setting the optimization level
+ to <tt>-O4</tt> when using this option will optimize even harder, though
+ this usually doesn't result in any improvement over <tt>-O3</tt>.</li>
<li>The type and constant conversion logic has been almost entirely rewritten,
fixing a multitude of obscure bugs.</li>
</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) and the <a href="ExceptionHandling.html">Exception Handling
+ enabling inlining and other optimizations. Please see its <a href=
+ "http://blog.llvm.org/2011/11/llvm-30-exception-handling-redesign.html">blog
+ post</a> 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.
<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>A new <a href="LangRef.html#int_expect">llvm.expect intrinsic</a> allows a
+ frontend to express expected control flow (and the
+ <a href="BranchWeightMetadata.html#builtin_expect">
+ <code>__builtin_expect</code></a> 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>
</div>
-</div>
-
<!-- *********************************************************************** -->
<h2>
<a name="additionalinfo">Additional Information</a>