[llvm-commits] [llvm] r102051 - /llvm/trunk/docs/ReleaseNotes.html

Chris Lattner sabre at nondot.org
Wed Apr 21 22:41:35 PDT 2010


Author: lattner
Date: Thu Apr 22 00:41:35 2010
New Revision: 102051

URL: http://llvm.org/viewvc/llvm-project?rev=102051&view=rev
Log:
various updates.

Modified:
    llvm/trunk/docs/ReleaseNotes.html

Modified: llvm/trunk/docs/ReleaseNotes.html
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/docs/ReleaseNotes.html?rev=102051&r1=102050&r2=102051&view=diff
==============================================================================
--- llvm/trunk/docs/ReleaseNotes.html (original)
+++ llvm/trunk/docs/ReleaseNotes.html Thu Apr 22 00:41:35 2010
@@ -29,10 +29,10 @@
 </div>
 
 <!--
-<h1 style="color:red">These are in-progress notes for the upcoming LLVM 2.7
+<h1 style="color:red">These are in-progress notes for the upcoming LLVM 2.8
 release.<br>
 You may prefer the
-<a href="http://llvm.org/releases/2.6/docs/ReleaseNotes.html">LLVM 2.6
+<a href="http://llvm.org/releases/2.6/docs/ReleaseNotes.html">LLVM 2.7
 Release Notes</a>.</h1>-->
 
 <!-- *********************************************************************** -->
@@ -383,7 +383,7 @@
 </p>
 
 <ul>
-<li>LLVM has a new <a href="http://llvm.org/Logo.html">official Logo</a>!</li>
+<li>LLVM has a new <a href="http://llvm.org/Logo.html">official logo</a>!</li>
 
 <li>Ted Kremenek and Doug Gregor have stepped forward as <a
  href="http://llvm.org/docs/DeveloperPolicy.html#owners">Code Owners</a> of the
@@ -396,7 +396,7 @@
 
 <li>The LLVM web pages are now checked into the SVN server, in the "www",
     "www-pubs" and "www-releases" SVN modules.  Previously they were hidden in a
-    largely inaccessible old CVS server.</p>
+    largely inaccessible old CVS server.</li>
 
 <li><a href="http://llvm.org">llvm.org</a> is now hosted on a new (and much
     faster) server.  It is still graciously hosted at the University of Illinois
@@ -414,11 +414,11 @@
 <p>LLVM 2.7 includes several major new capabilities:</p>
 
 <ul>
-<li>This release includes initial support for the <a
+<li>2.7 includes initial support for the <a
   href="http://en.wikipedia.org/wiki/MicroBlaze">MicroBlaze</a> target.
   MicroBlaze is a soft processor core designed for Xilinx FPGAs.</li>
 
-<li>LLVM 2.7 includes a new LLVM IR "extensible metadata" feature.  This feature
+<li>2.7 includes a new LLVM IR "extensible metadata" feature.  This feature
  supports many different use cases, including allowing front-end authors to
  encode source level information into LLVM IR, which is consumed by later
  language-specific passes.  This is a great way to do high-level optimizations
@@ -426,26 +426,26 @@
  href="http://blog.llvm.org/2010/04/extensible-metadata-in-llvm-ir.html">
  Extensible Metadata Blog Post</a> for more information.</li>
  
-<li>LLVM 2.7 encodes <a href="SourceLevelDebugging.html">debug information</a>
+<li>2.7 encodes <a href="SourceLevelDebugging.html">debug information</a>
 in a completely new way, built on extensible metadata.  The new implementation
 is much more memory efficient and paves the way for improvements to optimized
 code debugging experience.</li>
 
-<li>LLVM 2.7 now directly supports taking the address of a label and doing an
+<li>2.7 now directly supports taking the address of a label and doing an
     indirect branch through a pointer.  This is particularly useful for
     interpreter loops, and is used to implement the GCC "address of label"
     extension.  For more information, see the <a 
 href="http://blog.llvm.org/2010/01/address-of-label-and-indirect-branches.html">
 Address of Label and Indirect Branches in LLVM IR Blog Post</a>.
 
-<li>LLVM 2.7 is the first release to start supporting APIs for assembling and
+<li>2.7 is the first release to start supporting APIs for assembling and
     disassembling target machine code.  These APIs are useful for a variety of
     low level clients, and are surfaced in the new "enhanced disassembly" API.
     For more information see the <a 
     href="http://blog.llvm.org/2010/01/x86-disassembler.html">The X86
     Disassembler Blog Post</a> for more information.</li>
 
-<li>LLVM 2.7 includes major parts of the work required by the new MC Project,
+<li>2.7 includes major parts of the work required by the new MC Project,
     which aims to rework our handling of low-level machine code.  A few targets
     have been refactored to support it, and work is underway to support a native
     assembler in LLVM.  This work is not complete in LLVM 2.7, but you has made
@@ -468,17 +468,17 @@
 expose new optimization opportunities:</p>
 
 <ul>
-<li>LLVM IR now supports a 16-bit "half float" data type through two new <a
-    href="LangRef.html#int_fp16">intrinsics</a> and APFloat support.</li>
-<li>LLVM IR supports two <a href="LangRef.html#fnattrs">new function
+<li>LLVM IR now supports a 16-bit "half float" data type through <a
+   href="LangRef.html#int_fp16">two new intrinsics</a> and APFloat support.</li>
+<li>LLVM IR supports two new <a href="LangRef.html#fnattrs">function
     attributes</a>: inlinehint and alignstack(n).  The former is a hint to the
-    optimizer that a function was declared 'inline' and thus it might be useful
-    to increase the chances the the inliner actually inline it.  The later
+    optimizer that a function was declared 'inline' and thus the inliner should
+    weight it higher when considering inlining it.  The later
     indicates to the code generator that the function diverges from the platform
     ABI on stack alignment.</li>
 <li>The new <a href="LangRef.html#int_objectsize">llvm.objectsize</a> intrinsic
     allows the optimizer to infer the sizes of memory objects in some cases.
-    This intrinsic is used to implement the GCC __builtin_object_size
+    This intrinsic is used to implement the GCC <tt>__builtin_object_size</tt>
     extension.</li>
 <li>LLVM 2.7 has pre-alpha support for <a
   href="http://llvm.org/docs/LangRef.html#t_union">unions in LLVM IR</a>.
@@ -501,47 +501,50 @@
 
 <ul>
 
-<li>Inliner reuses arrays allocas when inlining multiple callers to reduce stack usage.</li>
-<li>Instcombine is now a library, has its own IRBuilder to simplify itself.</li>
-<li>Better code size analysis in loop unswitch, inliner code split out to a new 
-  CodeMetrics class for reuse.</li>
-<li>Many changes to the pass ordering for improved optimization
-   effectiveness.</li>
-<li>BasicAA improved to be less dependent on "type safe" pointers, it can now look
-  through bitcasts more aggressively.</li>
-<li>GVN PHI Translation improvements. blog post: http://blog.llvm.org/2009/12/advanced-topics-in-redundant-load.html</li>
-<li>New SCEV AA pass: -scev-aa</li>
-<li>Target data now has notion of 'native' integer data types which optimizations can use.</li>
-<li>Opt now works conservatively if no target data is set (is this fully working?)</li>
-<li>New Analysis/InstructionSimplify.h interface for simplifying instructions that don't exist.</li>
+<li>The inliner reuses now merges arrays stack objects in different callees when
+    inlining multiple call sites into one function.  This reduces the stack size
+    of the resultant function.</li>
+<li>The -basicaa alias analysis pass (which is the default) has been improved to
+    be less dependent on "type safe" pointers.  It can now look through bitcasts
+    and other constructs more aggressively, allowing better load/store
+    optimization.</li>
+<li>The load elimination optimization in the GVN Pass [<a
+href="http://blog.llvm.org/2009/12/introduction-to-load-elimination-in-gvn.html">intro
+ blog post</a>] has been substantially improved to be more aggressive about
+ partial redundancy elimination and do more aggressive phi translation.  Please
+ see the <a
+ href="http://blog.llvm.org/2009/12/advanced-topics-in-redundant-load.html">
+ Advanced Topics in Redundant Load Elimination with a Focus on PHI Translation
+ Blog Post</a> for more details.</li>
+<li>The module <a href="LangRef.html#datalayout">target data string</a> now
+    includes a notion of what the 'native' integer data types a for the target,
+    which allows various optimizations to use.  This helps mid-level
+    optimizations avoid promoting complex sequences of operations to data types
+    that are not natively supported (e.g. converting i32 operations to i64 on
+    a 32-bit chip).</li>
+<li>The mid-level optimizer is now conservative when operating on a module with
+    no target data.  Previously, it would default to SparcV9 settings, which is
+    not what most people expected.</li>
 <li>Jump threading is now much more aggressive at simplifying correlated
-   conditionals and threading blocks with otherwise complex logic. CondProp pass
-   removed (functionality merged into jump threading).</li>
-<li>New SSAUpdater and MachineSSAUpdater classes for unstructured ssa updating,
-  changed jump threading, GVN, etc to use it which simplified them and speed
-  them up.</li>
-
-
-<li>
-The Optimal Edge Profiling implementation in 2.6 was more a proof of 
-concept. The current implementation (the one that will go into 2.7) is 
-now stable and (as far as my tests go) bug free.
-
-The profiling with instrumentation via "opt" and analysis via the tool 
-"llvm-prof" should Work As Expected (TM).
-
-Two things are missing:
-
-*) Still missing is the modification of all -std-compile-opt passes to 
-update the profiling information according to the changes made to the 
-CFG, I'm planning to do this after my master thesis is finished. This 
-will enable all passes to use the ProfileInfo if available and base 
-decisions on that information.
-
-*) GCC has the options "-pg", "-fprofile-arcs" and "--coverage" that 
-insert profiling code and "-fprofile-use" to use them the next time 
-during compilation. I guess this options should also work properly in 
-llvm-gcc and clang?</li>
+   conditionals and threading blocks with otherwise complex logic. It has
+   subsumed the old "Conditional Propagation" pass, and -condprop has been
+   removed from LLVM 2.7.</li>
+<li>The -instcombine pass has been refactored from being one huge file to being
+    a library of its own.  Internally, it uses a customized IRBuilder to clean
+    it up and simplify it.</li>
+
+<li>The optimal edge profiling pass is reliable and much more complete than in
+    2.6.  It can be used with the llvm-prof tool but isn't wired up to the
+    llvm-gcc and clang command line options yet.</li>
+
+<li>A new experimental alias analysis implementation, -scev-aa, has been added.
+    It uses LLVM's Scalar Evolution implementation to do symbolic analysis of
+    pointer offset expressions to disambiguate pointers.  It can catch a few
+    cases that basicaa cannot, particularly in complex loop nests.</li>
+
+<li>As usual, there are countless minor optimization improvements and bug fixes,
+    and the default pass ordering has been tweaked for improved optimization
+    effectiveness.</li>
 
 </ul>
 
@@ -670,7 +673,25 @@
 </p>
 
 <ul>
-<li>The llvm/Support/Regex.h header exposes a platform independent regular
+<li>The optimizer uses the new CodeMetrics class to measure the size of code.
+    Various passes that use thing (like the inliner, loop unswitcher, etc) all
+    use this to make more accurate estimates of the code size impact of various
+    optimizations.</li>
+<li>A new <a href="http://llvm.org/doxygen/InstructionSimplify_8h-source.html">
+    llvm/Analysis/InstructionSimplify.h</a> interface available for doing
+    symbolic simplification of instructions (e.g. <tt>a+0</tt> -> <tt>a</tt>)
+    without requiring the instruction to exist.  This centralizes a lot of
+    ad-hoc symbolic manipulation code scattered in various passes.</li>
+<li>The optimizer now uses a new <a
+    href="http://llvm.org/doxygen/SSAUpdater_8h-source.html">SSAUpdater</a>
+    class which efficiently supports
+    doing unstructured SSA update operations.  This centralized a bunch of code
+    scattered through various passes (e.g. jump threading, lcssa, loop rotate,
+    etc) for doing this sort of thing.  The code generator has an similar
+    <a href="http://llvm.org/doxygen/MachineSSAUpdater_8h-source.html">
+    MachineSSAUpdater</a> class.</li>
+<li>The <a href="http://llvm.org/doxygen/Regex_8h-source.html">
+    llvm/Support/Regex.h</a> header exposes a platform independent regular
     expression API.  Building on this, the <a
     href="TestingGuide.html#FileCheck">FileCheck</a> utility now supports
     regular exressions.</li>





More information about the llvm-commits mailing list