Optimize comparison against 0 in conditional instructions.
[oota-llvm.git] / docs / ReleaseNotes.html
index 333d82985d15aad25997be93b284963db145acad..733c1bf00e9bcc5df03e158e295b9946b4e55c51 100644 (file)
@@ -120,9 +120,25 @@ Release Notes</a>.</h1>
   <li>Better detection of include and linking paths for system headers and
       libraries, especially for Linux distributions.</li>
 
-  <li>Implemented support
-      for <a href="http://clang.llvm.org/docs/AutomaticReferenceCounting.html">Automatic
-      Reference Counting</a> for Objective-C.</li>
+  <li>Several improvements to Objective-C support, including:
+
+    <ul>
+      <li><a href="http://clang.llvm.org/docs/AutomaticReferenceCounting.html">
+          Automatic Reference Counting</a> (ARC) and an improved memory model
+          cleanly separating object and C memory.</li>
+
+      <li>A migration tool for moving legacy code to ARC</li>
+
+      <li>Better support for data hiding, allowing instance variables to be
+          declared in implementation contexts or class extensions</li>
+      <li>Weak linking for classes</li>
+      <li>Improved static type checking by inferring the return type of methods
+      such as +alloc and -init.</li>
+    </ul>
+
+    Some new features require either the Mac OS X 10.7 / iOS 5 Objective-C
+    runtime, or version 1.6 or later of the GNUstep Objective-C runtime
+    version.</li>
 
   <li>Implemented a number of optimizations in <tt>libclang</tt>, the Clang C
       interface, to improve the performance of code completion and the mapping
@@ -221,6 +237,9 @@ Release Notes</a>.</h1>
    licensed</a> under the MIT and UIUC license, allowing it to be used more
    permissively.</p>
 
+<p>Libc++ has been ported to FreeBSD and imported into the base system.  It is
+   planned to be the default STL implementation for FreeBSD 10.</p>
+
 </div>
 
 
@@ -520,7 +539,7 @@ be used to verify some algorithms.
    its own interpreter. Pragmatic Smalltalk is a dialect of Smalltalk, built on
    top of LanguageKit, that interfaces directly with Objective-C, sharing the
    same object representation and message sending behaviour. These projects are
-   developed as part of the &Eacute;toi&eacute; desktop environment.</p>
+   developed as part of the &Eacute;toil&eacute; desktop environment.</p>
 
 </div>
 
@@ -700,24 +719,6 @@ be used to verify some algorithms.
 
 </div>
 
-<!--=========================================================================-->
-<h3>The ZooLib C++ Cross-Platform Application Framework</h3>
-
-<div>
-
-<p><a href="http://www.zoolib.org/">ZooLib</a> is Open Source under the MIT
-   License. It provides GUI, filesystem access, TCP networking, thread-safe
-   memory management, threading and locking for Mac OS X, Classic Mac OS,
-   Microsoft Windows, POSIX operating systems with X11, BeOS, Haiku, Apple's iOS
-   and Research in Motion's BlackBerry.</p>
-
-<p>My current work is to use CLang's static analyzer to improve ZooLib's code
-   quality.  I also plan to set up LLVM compiles of the demo programs and test
-   programs using CLang and LLVM on all the platforms that CLang, LLVM and
-   ZooLib all support.</p>
-
-</div>
-  
 </div>
 
 <!-- *********************************************************************** -->
@@ -770,8 +771,6 @@ be used to verify some algorithms.
  Pass manager extension API.
 
 
-Information about branch probability and basic block frequency is now available within LLVM based on a combination of static branch prediction heuristics and __builtin_expect calls.  That information is currently used for register spill placement and if-conversion, with additional optimizations planned for future releases.  The same frameworks are intended for eventual use with profile-guided optimization, but that is not yet implemented.
  -->
   
 <ul>
@@ -820,7 +819,7 @@ Information about branch probability and basic block frequency is now available
 <p>Converting from the old EH API to the new EH API is rather simple, because a
    lot of complexity has been removed. The two intrinsics,
    <code>@llvm.eh.exception</code> and <code>@llvm.eh.selector</code> have been
-   superceded by the <code>landingpad</code> instruction. Instead of generating
+   superseded by the <code>landingpad</code> instruction. Instead of generating
    a call to <code>@llvm.eh.exception</code> and <code>@llvm.eh.selector</code>:
 
 <div class="doc_code">
@@ -942,9 +941,13 @@ Builder.CreateResume(UnwindData);
    optimizers:</p>
 
 <ul>
-<!--
-<li></li>
--->
+<li>Information about <a href="BranchWeightMetadata.html">branch probability</a>
+    and basic block frequency is now available within LLVM, based on a
+    combination of static branch prediction heuristics and
+    <code>__builtin_expect</code> calls.  That information is currently used for
+    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>
 </li>
   
 </ul>
@@ -1009,6 +1012,8 @@ compiler and provides better integration with the platform ABI as a result.</p>
 <p>New features and major changes in the X86 target include:</p>
 
 <ul>
+  <li>The X86 backend, assembler and disassembler now completely support AVX.
+      To enable it pass <code>-mavx</code> to the compiler.</li>
 
   <li>The X86 backend now supports
     all <a href="http://llvm.org/PR879">inline assembly that uses the X86
@@ -1130,7 +1135,7 @@ compiler and provides better integration with the platform ABI as a result.</p>
       "<code>load volatile</code>"/"<code>store volatile</code>".  The old
       syntax ("<code>volatile load</code>"/"<code>volatile store</code>")
       is still accepted, but is now considered deprecated.</li>
-  <li>The old atomic intrinscs (<code>llvm.memory.barrier</code> and
+  <li>The old atomic intrinsics (<code>llvm.memory.barrier</code> and
       <code>llvm.atomic.*</code>) are now gone.  Please use the new atomic
       instructions, described in the <a href="Atomics.html">atomics guide</a>.
 </ul>
@@ -1158,9 +1163,9 @@ compiler and provides better integration with the platform ABI as a result.</p>
    LLVM API changes are:</p>
 
 <ul>
-  <li>The biggest and most pervasive change is that llvm::Type's are no longer
+  <li>The biggest and most pervasive change is that llvm::Types are no longer
       returned or accepted as 'const' values.  Instead, just pass around
-      non-const Type's.</li>
+      non-const Types.</li>
   
   <li><code>PHINode::reserveOperandSpace</code> has been removed. Instead, you
       must specify how many operands to reserve space for when you create the