diff --git a/docs/ReleaseNotes.html b/docs/ReleaseNotes.html
index 56dd66a..15167fe 100644
--- a/docs/ReleaseNotes.html
+++ b/docs/ReleaseNotes.html
@@ -1,32 +1,29 @@
-
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
                       "http://www.w3.org/TR/html4/strict.dtd">
 <html>
 <head>
   <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
   <link rel="stylesheet" href="llvm.css" type="text/css">
-  <title>LLVM 2.3 Release Notes</title>
+  <title>LLVM 2.4 Release Notes</title>
 </head>
 <body>
 
-<div class="doc_title">LLVM 2.3 Release Notes</div>
- 
+<div class="doc_title">LLVM 2.4 Release Notes</div>
+
 <ol>
   <li><a href="#intro">Introduction</a></li>
-  <li><a href="#changes">Major Changes and Sub-project Status</a></li>
-  <li><a href="#whatsnew">What's New?</a></li>
+  <li><a href="#subproj">Sub-project Status Update</a></li>
+  <li><a href="#whatsnew">What's New in LLVM?</a></li>
   <li><a href="GettingStarted.html">Installation Instructions</a></li>
   <li><a href="#portability">Portability and Supported Platforms</a></li>
-  <li><a href="#knownproblems">Known Problems</a>
+  <li><a href="#knownproblems">Known Problems</a></li>
   <li><a href="#additionalinfo">Additional Information</a></li>
 </ol>
 
 <div class="doc_author">
-  <p>Written by the <a href="http://llvm.org">LLVM Team</a><p>
+  <p>Written by the <a href="http://llvm.org">LLVM Team</a></p>
 </div>
 
-<!-- Done through Week-of-Mon-20080324.txt -->
-
 <!-- *********************************************************************** -->
 <div class="doc_section">
   <a name="intro">Introduction</a>
@@ -35,141 +32,60 @@
 
 <div class="doc_text">
 
-<p>This document contains the release notes for the LLVM compiler
-infrastructure, release 2.3.  Here we describe the status of LLVM, including
-major improvements from the previous release and any known problems.  All LLVM
-releases may be downloaded from the <a href="http://llvm.org/releases/">LLVM
-releases web site</a>.</p>
+<p>This document contains the release notes for the LLVM Compiler
+Infrastructure, release 2.4.  Here we describe the status of LLVM, including
+major improvements from the previous release and significant known problems.
+All LLVM releases may be downloaded from the <a 
+href="http://llvm.org/releases/">LLVM releases web site</a>.</p>
 
 <p>For more information about LLVM, including information about the latest
 release, please check out the <a href="http://llvm.org/">main LLVM
 web site</a>.  If you have questions or comments, the <a
-href="http://mail.cs.uiuc.edu/mailman/listinfo/llvmdev">LLVM developer's mailing
-list</a> is a good place to send them.</p>
+href="http://mail.cs.uiuc.edu/mailman/listinfo/llvmdev">LLVM Developer's Mailing
+List</a> is a good place to send them.</p>
 
-<p>Note that if you are reading this file from a Subversion checkout or the 
+<p>Note that if you are reading this file from a Subversion checkout or the
 main LLVM web page, this document applies to the <i>next</i> release, not the
-current one.  To see the release notes for a specific releases, please see the
+current one.  To see the release notes for a specific release, please see the
 <a href="http://llvm.org/releases/">releases page</a>.</p>
 
 </div>
 
-<!-- *********************************************************************** -->
-<div class="doc_section">
-  <a name="changes">Major Changes and Sub-project Status</a>
-</div>
-<!-- *********************************************************************** -->
-
-<div class="doc_text">
-
-<p>This is the fourteenth public release of the LLVM Compiler Infrastructure. 
-It includes a large number of features and refinements from LLVM 2.2.</p>
-
-</div>
-
-<!-- Unfinished features in 2.3:
+<!-- Unfinished features in 2.4:
   Machine LICM
   Machine Sinking
   LegalizeDAGTypes
+  llc -enable-value-prop, propagation of value info (sign/zero ext info) from
+       one MBB to another
  -->
 
-<!--=========================================================================-->
-<div class="doc_subsection">
-<a name="changes">Major Changes in LLVM 2.3</a>
+ <!-- for announcement email:
+    mention dev mtg
+    Xcode 3.1 and 3.1.1.
+  -->
+
+<!-- *********************************************************************** -->
+<div class="doc_section">
+  <a name="subproj">Sub-project Status Update</a>
 </div>
-
-<div class="doc_text">
-
-<p>LLVM 2.3 no longer supports llvm-gcc 4.0, it has been replaced with
-   llvm-gcc 4.2.</p>
-
-<p>LLVM 2.3 no longer includes the <tt>llvm-upgrade</tt> tool.  It was useful
-   for upgrading LLVM 1.9 files to LLVM 2.x syntax, but you can always use a
-   previous LLVM release to do this.  One nice impact of this is that the LLVM
-   regression test suite no longer depends on llvm-upgrade, which makes it run
-   faster.</p>
-
-<p>The <tt>llvm2cpp</tt> tool has been folded into llc, use
-    <tt>llc -march=cpp</tt> instead of <tt>llvm2cpp</tt>.</p>
-
-<p>LLVM API Changes:</p>
-
-<ul>
-<li>Several core LLVM IR classes have migrated to use the
-    '<tt>FOOCLASS::Create(...)</tt>' pattern instead of '<tt>new 
-    FOOCLASS(...)</tt>' (e.g. where FOOCLASS=<tt>BasicBlock</tt>).  We hope to
-    standardize on <tt>FOOCLASS::Create</tt> for all IR classes in the future,
-    but not all of them have been moved over yet.</li>
-<li>LLVM 2.3 renames the LLVMBuilder and LLVMFoldingBuilder classes to
-    <a href="http://llvm.org/doxygen/classllvm_1_1IRBuilder.html">IRBuilder</a>.
-    </li>
-<li>MRegisterInfo was renamed to
-    <a href="http://llvm.org/doxygen/classllvm_1_1TargetRegisterInfo.html">
-    TargetRegisterInfo</a>.</li>
-<li>The MappedFile class is gone, please use
-    <a href="http://llvm.org/doxygen/classllvm_1_1MemoryBuffer.html">
-    MemoryBuffer</a> instead.</li>
-<li>The '<tt>-enable-eh</tt>' flag to llc has been removed.  Now code should 
-    encode whether it is safe to omit unwind information for a function by
-    tagging the Function object with the '<tt>nounwind</tt>' attribute.</li>
-<li>The ConstantFP::get method that uses APFloat now takes one argument
-    instead of two. The type argument has been removed, and the type is
-    now inferred from the size of the given APFloat value.</li>
-
-</ul>
-</div>
-
-<!--=========================================================================-->
-<div class="doc_subsection">
-<a name="otherprojects">Other LLVM Sub-Projects</a>
-</div>
+<!-- *********************************************************************** -->
 
 <div class="doc_text">
 <p>
-The core LLVM 2.3 distribution currently consists of code from the core LLVM
-repository (which roughly contains the LLVM optimizer, code generators and
+The LLVM 2.4 distribution currently consists of code from the core LLVM
+repository (which roughly includes the LLVM optimizers, code generators and
 supporting tools) and the llvm-gcc repository.  In addition to this code, the
 LLVM Project includes other sub-projects that are in development.  The two which
-are the most actively developed are the new <a href="#vmkit">vmkit Project</a>
-and the <a href="#clang">Clang Project</a>. 
-</p>
-</div>
-
-<!--=========================================================================-->
-<div class="doc_subsubsection">
-<a name="vmkit">vmkit</a>
-</div>
-
-<div class="doc_text">
-<p>
-The "vmkit" project is a new addition to the LLVM family.  It is an
-implementation of a JVM and a CLI Virtual Machines (Microsoft .NET is an
-implementation of the CLI) using the Just-In-Time compiler of LLVM.</p>
-
-<p>The JVM, called JnJVM, executes real-world applications such as Apache
-projects (e.g. Felix and Tomcat) and the SpecJVM98 benchmark.  It uses the GNU
-Classpath project for the base classes.  The CLI implementation, called N3, is
-its in early stages but can execute simple applications and the "pnetmark"
-benchmark. It uses the pnetlib project as its core library.</p>
-
-<p>The 'vmkit' VMs compare in performance with industrial and top open-source
-VMs on scientific applications.  Besides the JIT, the VMs use many features of
-the LLVM framework, including the standard set of optimizations, atomic
-operations, custom function provider and memory manager for JITed methods, and
-specific virtual machine optimizations. vmkit is not an official part of LLVM
-2.3 release. It is publicly available under the LLVM license and can be
-downloaded from:
+are the most actively developed are the <a href="#clang">Clang Project</a> and
+the <a href="#vmkit">VMKit Project</a>.
 </p>
 
-<div class="doc_code">
-<pre>svn co http://llvm.org/svn/llvm-project/vmkit/trunk vmkit</pre>
 </div>
 
-</div>
 
 <!--=========================================================================-->
-<div class="doc_subsubsection">
-<a name="clang">Clang</a>
+<div class="doc_subsection">
+<a name="clang">Clang: C/C++/Objective-C Frontend Toolkit</a>
 </div>
 
 <div class="doc_text">
@@ -182,27 +98,109 @@
 yet production quality, it is progressing very nicely.  In addition, C++
 front-end work has started to make significant progress.</p>
 
-<p>At this point, Clang is most useful if you are interested in source-to-source
-transformations (such as refactoring) and other source-level tools for C and
-Objective-C.  Clang now also includes tools for turning C code into pretty HTML,
-and includes a new <a href="http://clang.llvm.org/StaticAnalysis.html">static
-analysis tool</a> in development.  This tool focuses on automatically finding
-bugs in C and Objective-C code.</p>
+<p>Clang, in conjunction with the <tt>ccc</tt> driver, is now usable as a
+replacement for gcc for building some small- to medium-sized C applications.
+Additionally, Clang now has code generation support for Objective-C on Mac OS X
+platform. Major highlights include:</p>
 
+<ul>
+	<li> Clang/ccc pass almost all of the LLVM test suite on Mac OS X and Linux 
+on the 32-bit x86 architecture. This includes significant C 
+applications such as <a href="http://www.sqlite.org">sqlite3</a>, 
+<a href="http://www.lua.org">lua</a>, and 
+<a href="http://www.clamav.net">Clam AntiVirus</a>. </li>
+
+	<li> Clang can build the majority of Objective-C examples shipped with the 
+Mac OS X Developer Tools. </li>
+</ul>
+
+<p>Clang code generation still needs considerable testing and development,
+however.  Some areas under active development include:</p>
+
+<ul>
+	<li> Improved support for C and Objective-C features, for example
+	variable-length arrays, va_arg, exception handling (Obj-C), and garbage
+	collection (Obj-C). </li>
+	<li> ABI compatibility, especially for platforms other than 32-bit
+	x86. </li>
+</ul>
+
+</div>
+
+<!--=========================================================================-->
+<div class="doc_subsection">
+<a name="clangsa">Clang Static Analyzer</a>
+</div>
+
+<div class="doc_text">
+
+<p>The Clang project also includes an early stage static source code analysis
+tool for <a href="http://clang.llvm.org/StaticAnalysis.html">automatically
+finding bugs</a> in C and Objective-C programs. The tool performs a growing set
+of checks to find bugs that occur on a specific path within a program.  Examples
+of bugs the tool finds include logic errors such as null dereferences,
+violations of various API rules, dead code, and potential memory leaks in
+Objective-C programs. Since its inception, public feedback on the tool has been
+extremely positive, and conservative estimates put the number of real bugs it
+has found in industrial-quality software on the order of thousands.</p>
+
+<p>The tool also provides a simple web GUI to inspect potential bugs found by
+the tool.  While still early in development, the GUI illustrates some of the key
+features of Clang: accurate source location information, which is used by the
+GUI to highlight specific code expressions that relate to a bug (including those
+that span multiple lines); and built-in knowledge of macros, which is used to
+perform inline expansion of macros within the GUI itself.</p>
+
+<p>The set of checks performed by the static analyzer is gradually expanding,
+and future plans for the tool include full source-level inter-procedural
+analysis and deeper checks such as buffer overrun detection. There are many
+opportunities to extend and enhance the static analyzer, and anyone interested
+in working on this project is encouraged to get involved!</p>
+
+</div>
+
+<!--=========================================================================-->
+<div class="doc_subsection">
+<a name="vmkit">VMKit: JVM/CLI Virtual Machine Implementation</a>
+</div>
+
+<div class="doc_text">
+<p>
+The <a href="http://vmkit.llvm.org/">VMKit project</a> is an implementation of
+a JVM and a CLI Virtual Machines (Microsoft .NET is an
+implementation of the CLI) using the Just-In-Time compiler of LLVM.</p>
+
+<p>Following LLVM 2.4, VMKit has its first release 0.24 that you can find on its
+<a href="http://vmkit.llvm.org/releases/">webpage</a>. The release includes
+bug fixes, cleanup and new features. The major changes are:</p>
+
+<ul>
+
+<li> Support for generics in the .Net virtual machine.</li>
+<li> Initial support for the Mono class libraries. </li>
+<li> Support for MacOSX/x86, following LLVM's support for exceptions in
+JIT on MacOSX/x86. </li>
+<li> A new vmkit driver: a program to run java or .net applications. The driver
+supports llvm command line arguments including the new "-fast" option. </li>
+<li> A new memory allocation scheme in the JVM that makes unloading a
+class loader very fast. </li>
+<li> VMKit now follows the LLVM Makefile machinery. </li>
+
+</ul>
 </div>
 
 
 <!-- *********************************************************************** -->
 <div class="doc_section">
-  <a name="whatsnew">What's New?</a>
+  <a name="whatsnew">What's New in LLVM?</a>
 </div>
 <!-- *********************************************************************** -->
 
 <div class="doc_text">
 
-<p>LLVM 2.3 includes a huge number of bug fixes, performance tweaks and minor
-improvements.  Some of the major improvements and new features are listed in
-this section.
+<p>This release includes a huge number of bug fixes, performance tweaks, and
+minor improvements.  Some of the major improvements and new features are listed
+in this section.
 </p>
 </div>
 
@@ -213,52 +211,29 @@
 
 <div class="doc_text">
 
-<p>LLVM 2.3 includes several major new capabilities:</p>
+<p>LLVM 2.4 includes several major new capabilities:</p>
 
 <ul>
-<li><p>The biggest change in LLVM 2.3 is Multiple Return Value (MRV) support.
-    MRVs allow LLVM IR to directly represent functions that return multiple
-    values without having to pass them "by reference" in the LLVM IR.  This
-    allows a front-end to generate more efficient code, as MRVs are generally
-    returned in registers if a target supports them.  See the <a
-    href="LangRef.html#i_getresult">LLVM IR Reference</a> for more details.</p>
-    
- <p>MRVs are fully supported in the LLVM IR, but are not yet fully supported in
-    on all targets.  However, it is generally safe to return up to 2 values from
-    a function: most targets should be able to handle at least that.  MRV
-    support is a critical requirement for X86-64 ABI support, as X86-64 requires
-    the ability to return multiple registers from functions, and we use MRVs to
-    accomplish this in a direct way.</p></li>
+<li><p>The most visible end-user change in LLVM 2.4 is that it includes many
+optimizations and changes to make -O0 compile times much faster.  You should see
+improvements in speed on the order of 30% (or more) than in LLVM 2.3.  There are
+many pieces to this change described in more detail below.  The speedups and new
+components can also be used for JIT compilers that want fast
+compilation.</p></li>
 
-<li><p>LLVM 2.3 includes a complete reimplementation of the "<tt>llvmc</tt>"
-    tool.  It is designed to overcome several problems with the original 
-    <tt>llvmc</tt> and to provide a superset of the features of the
-    '<tt>gcc</tt>' driver.</p>
+<li><p>The biggest change to the LLVM IR is that Multiple Return Values (which
+were introduced in LLVM 2.3) have been generalized to full support for "First
+Class Aggregate" values in LLVM 2.4.  This means that LLVM IR supports using
+structs and arrays as values in a function.  This capability is mostly useful
+for front-end authors, who prefer to treat things like complex numbers, simple
+tuples, dope vectors, etc., as Value*'s instead of as a tuple of Value*'s or as
+memory values.  Bitcode files from LLVM 2.3 will automatically migrate to the
+general representation.</p></li>
 
-    <p>The main features of <tt>llvmc2</tt> are:
-    <ul>
-    <li>Extended handling of command line options and smart rules for
-    dispatching them to different tools.</li>
-    <li>Flexible (and extensible) rules for defining different tools.</li>
-    <li>The different intermediate steps performed by tools are represented
-    as edges in the abstract graph.</li>
-    <li>The 'language' for driver behavior definition is tablegen and thus
-    it's relatively easy to add new features.</li>
-    <li>The definition of driver is transformed into set of C++ classes, thus
-    no runtime interpretation is needed.</li>
-    </ul>
-</li>
-
-<li><p>LLVM 2.3 includes a completely rewritten interface for <a
-    href="LinkTimeOptimization.html">Link Time Optimization</a>.  This interface
-    is written in C, which allows for easier integration with C code bases, and
-    incorporates improvements we learned about from the first incarnation of the
-    interface.</p></li>
-
-<li><p>The <a href="tutorial/LangImpl1.html">Kaleidoscope tutorial</a> now
-    includes a "port" of the tutorial that <a 
-    href="tutorial/OCamlLangImpl1.html">uses the Ocaml bindings</a> to implement
-    the Kaleidoscope language.</p></li>
+<li><p>LLVM 2.4 also includes an initial port for the PIC16 microprocessor. This
+target only has support for 8 bit registers, and a number of other crazy
+constraints.  While the port is still in early development stages, it shows some
+interesting things you can do with LLVM.</p></li>
 
 </ul>
 
@@ -272,20 +247,34 @@
 
 <div class="doc_text">
 
-<p>LLVM 2.3 fully supports the llvm-gcc 4.2 front-end, and includes support
-for the C, C++, Objective-C, Ada, and Fortran front-ends.</p>
+<p>LLVM fully supports the llvm-gcc 4.2 front-end, which marries the GCC
+front-ends and driver with the LLVM optimizer and code generator.  It currently
+includes support for the C, C++, Objective-C, Ada, and Fortran front-ends.</p>
 
-<p>
 <ul>
-<li>llvm-gcc 4.2 includes numerous fixes to better support the Objective-C
-front-end.  Objective-C now works very well on Mac OS/X.</li>
+<li>LLVM 2.4 supports the full set of atomic <tt>__sync_*</tt> builtins.  LLVM
+2.3 only supported those used by OpenMP, but 2.4 supports them all.  Note that
+while llvm-gcc supports all of these builtins, not all targets do.  X86 support
+them all in both 32-bit and 64-bit mode and PowerPC supports them all except for
+the 64-bit operations when in 32-bit mode.</li>
 
-<li>Fortran <tt>EQUIVALENCE</tt>s are now supported by the gfortran
-front-end.</li>
+<li>llvm-gcc now supports an <tt>-flimited-precision</tt> option, which tells
+the compiler that it is okay to use low-precision approximations of certain libm
+functions (like <tt>exp</tt>, <tt>log</tt>, etc).  This allows you to get high
+performance if you only need (say) 12-bits of precision.</li>
 
-<li>llvm-gcc 4.2 includes many other fixes which improve conformance with the
-relevant parts of the GCC testsuite.</li>
+<li>llvm-gcc now supports a C language extension known as "<a 
+href="http://lists.cs.uiuc.edu/pipermail/cfe-dev/2008-August/002670.html">Blocks</a>".
+This feature is similar to nested functions and closures, but does not
+require stack trampolines (with most ABIs), and supports returning closures 
+from functions that define them.  Note that actually <em>using</em> Blocks
+requires a small runtime that is not included with llvm-gcc.</li>
 
+<li>llvm-gcc now supports a new <tt>-flto</tt> option.  On systems that support
+transparent Link Time Optimization (currently Darwin systems with Xcode 3.1 and
+later) this allows the use of LTO with other optimization levels like -Os.
+Previously, LTO could only be used with -O4, which implied optimizations in
+-O3 that can increase code size.</li>
 </ul>
 
 </div>
@@ -297,23 +286,49 @@
 </div>
 
 <div class="doc_text">
-<p>New features include:
-</p>
+<p>New features include:</p>
 
 <ul>
-<li>LLVM IR now directly represents "common" linkage, instead of representing it
-as a form of weak linkage.</li>
+<li>A major change to the <tt>Use</tt> class landed, which shrank it by 25%.  Since
+this is a pervasive part of the LLVM, it ended up reducing the memory use of
+LLVM IR in general by 15% for most programs.</li>
 
-<li>LLVM IR now has support for atomic operations, and this functionality can be
-accessed through the llvm-gcc "<tt>__sync_synchronize</tt>",
-"<tt>__sync_val_compare_and_swap</tt>", and related builtins.  Support for
-atomics are available in the Alpha, X86, X86-64, and PowerPC backends.</li>
+<li>Values with no names are now pretty printed by <tt>llvm-dis</tt> more
+nicely.  They now print as "<tt>%3 = add i32 %A, 4</tt>" instead of
+"<tt>add i32 %A, 4   ; &lt;i32&gt;:3</tt>", which makes it much easier to read.
+</li>
 
-<li>The C and Ocaml bindings have extended to cover pass managers, several
-transformation passes, iteration over the LLVM IR, target data, and parameter
-attribute lists.</li>
+<li>LLVM 2.4 includes some changes for better vector support.  First, the shift
+operations (<tt>shl</tt>, <tt>ashr</tt>, and <tt>lshr</tt>) now all support
+vectors and do an element-by-element shift (shifts of the whole vector can be
+accomplished by bitcasting the vector to <tt>&lt;1 x i128&gt;</tt>, for example). Second,
+there is initial support in development for vector comparisons with the
+<tt><a href="LangRef.html#i_fcmp">fcmp</a>/<a href="LangRef.html#i_icmp">icmp</a></tt>
+instructions.  These instructions compare two vectors and return a vector of
+<tt>i1</tt>'s for each result.  Note that there is very little codegen support
+available for any of these IR features though.</li>
+
+<li>A new <tt>DebugInfoBuilder</tt> class is available, which makes it much
+easier for front-ends to create debug info descriptors, similar to the way that
+<tt>IRBuilder</tt> makes it easier to create LLVM IR.</li>
+
+<li>The <tt>IRBuilder</tt> class is now parameterized by a class responsible
+for constant folding.  The default <tt>ConstantFolder</tt> class does target independent
+constant folding.  The <tt>NoFolder</tt> class does no constant folding at all, which is
+useful when learning how LLVM works.  The <tt>TargetFolder</tt> class folds the most,
+doing target dependent constant folding.</li>
+
+<li>LLVM now supports "function attributes", which allow us to separate return
+value attributes from function attributes.  LLVM now supports attributes on a
+function itself, a return value, and its parameters.  New supported function
+attributes include <tt>noinline/alwaysinline</tt> and the <tt>opt-size</tt> flag,
+which says the function should be optimized for code size.</li>
+
+<li>LLVM IR now directly represents "common" linkage, instead of
+    representing it as a form of weak linkage.</li>
+    
 </ul>
-  
+
 </div>
 
 <!--=========================================================================-->
@@ -323,66 +338,45 @@
 
 <div class="doc_text">
 
-<p>In addition to a huge array of bug fixes and minor performance tweaks, the 
-LLVM 2.3 optimizers support a few major enhancements:</p>
+<p>In addition to a huge array of bug fixes and minor performance tweaks, this
+release includes a few major enhancements and additions to the optimizers:</p>
 
 <ul>
 
-<li><p>Loop index set splitting on by default.
-This transformation hoists conditions from loop bodies and reduces a loop's
-iteration space to improve performance. For example,</p>
+<li>The Global Value Numbering (GVN) pass now does local Partial Redundancy
+Elimination (PRE) to eliminate some partially redundant expressions in cases
+where doing so won't grow code size.</li>
 
-<div class="doc_code">
-<pre>
-for (i = LB; i &lt; UB; ++i)
-  if (i &lt;= NV)
-    LOOP_BODY
-</pre>
-</div>
+<li>LLVM 2.4 includes a new loop deletion pass (which removes output-free
+provably-finite loops) and a rewritten Aggressive Dead Code Elimination (ADCE)
+pass that no longer uses control dependence information.  These changes speed up
+the optimizer and also prevent it from deleting output-free infinite
+loops.</li>
 
-<p>is transformed into:</p>
+<li>The new AddReadAttrs pass works out which functions are read-only or
+read-none (these correspond to 'pure' and 'const' in GCC) and marks them
+with the appropriate attribute.</li>
 
-<p><div class="doc_code">
-<pre>
-NUB = min(NV+1, UB)
-for (i = LB; i &lt; NUB; ++i)
-  LOOP_BODY
-</pre>
-</div>
-</p>
-</li>
+<li>LLVM 2.4 now includes a new SparsePropagation framework, which makes it
+trivial to build lattice-based dataflow solvers that operate over LLVM IR. Using
+this interface means that you just define objects to represent your lattice
+values and the transfer functions that operate on them.  It handles the
+mechanics of worklist processing, liveness tracking, handling PHI nodes,
+etc.</li>
 
-<li>LLVM now includes a new <tt>memcpy</tt> optimization pass which removes
-dead <tt>memcpy</tt> calls, unneeded copies of aggregates, and performs
-return slot optimization.  The LLVM optimizer now notices long sequences of
-consecutive stores and merges them into <tt>memcpy</tt>'s where profitable.</li>
+<li>The Loop Strength Reduction and induction variable optimization passes have
+several improvements to avoid inserting MAX expressions, to optimize simple
+floating point induction variables and to analyze trip counts of more
+loops.</li>
 
-<li>Alignment detection for vector memory references and for <tt>memcpy</tt> and
-<tt>memset</tt> is now more aggressive.</li> 
+<li>Various helper functions (ComputeMaskedBits, ComputeNumSignBits, etc) were
+pulled out of the Instruction Combining pass and put into a new 
+<tt>ValueTracking.h</tt> header, where they can be reused by other passes.</li>
 
-<li>The Aggressive Dead Code Elimination (ADCE) optimization has been rewritten
-to make it both faster and safer in the presence of code containing infinite
-loops.  Some of its prior functionality has been factored out into the loop
-deletion pass, which <em>is</em> safe for infinite loops.  The new ADCE pass is
-no longer based on control dependence, making it run faster.</li>
+<li>The tail duplication pass has been removed from the standard optimizer
+sequence used by llvm-gcc.  This pass still exists, but the benefits it once
+provided are now achieved by other passes.</li>
 
-<li>The 'SimplifyLibCalls' pass, which optimizes calls to libc and libm
-    functions for C-based languages, has been rewritten to be a FunctionPass
-    instead a ModulePass.  This allows it to be run more often and to be
-    included at -O1 in llvm-gcc.  It was also extended to include more
-    optimizations and several corner case bugs were fixed.</li>
-
-<li>LLVM now includes a simple 'Jump Threading' pass, which attempts to simplify
-    conditional branches using information about predecessor blocks, simplifying
-    the control flow graph.  This pass is pretty basic at this point, but
-    catches some important cases and provides a foundation to build on.</li>
-    
-<li>Several corner case bugs which could lead to deleting volatile memory
-    accesses have been fixed.</li>
-
-<li>Several optimizations have been sped up, leading to faster code generation
-    with the same code quality.</li>
-  
 </ul>
 
 </div>
@@ -394,50 +388,47 @@
 
 <div class="doc_text">
 
-<p>We put a significant amount of work into the code generator infrastructure,
+<p>We have put a significant amount of work into the code generator infrastructure,
 which allows us to implement more aggressive algorithms and make it run
 faster:</p>
 
 <ul>
-<li>The code generator now has support for carrying information about memory
-    references throughout the entire code generation process, via the
-    <a href="http://llvm.org/doxygen/classllvm_1_1MachineMemOperand.html">
-    MachineMemOperand</a> class. In the future this will be used to improve
-    both pre-pass and post-pass scheduling, and to improve compiler-debugging
-    output.</li>
+<li>The target-independent code generator supports (and the X86 backend
+    currently implements) a new interface for "fast" instruction selection. This
+    interface is optimized to produce code as quickly as possible, sacrificing
+    code quality to do it.  This is used by default at -O0 or when using
+    "llc -fast" on X86.  It is straight-forward to add support for
+    other targets if faster -O0 compilation is desired.</li>
 
-<li>The target-independent code generator infrastructure now uses LLVM's
-    <a href="http://llvm.org/doxygen/classllvm_1_1APInt.html">APInt</a>
-    class to handle integer values, which allows it to support integer types
-    larger than 64 bits (for example i128). Note that support for such types is
-    also dependent on target-specific support.  Use of APInt is also a step
-    toward support for non-power-of-2 integer sizes.</li>
-    
-<li>LLVM 2.3 includes several compile time speedups for code with large basic
-    blocks, particularly in the instruction selection phase, register
-    allocation, scheduling, and tail merging/jump threading.</li>
+<li>In addition to the new 'fast' instruction selection path, many existing
+    pieces of the code generator have been optimized in significant ways.
+    SelectionDAG's are now pool allocated and use better algorithms in many
+    places, the ".s" file printers now use <tt>raw_ostream</tt> to emit text much faster,
+    etc.  The end result of these improvements is that the compiler also takes
+    substantially less time to generate code that is just as good (and often
+    better) than before.</li>
 
-<li>LLVM 2.3 includes several improvements which make llc's
-    <tt>--view-sunit-dags</tt> visualization of scheduling dependency graphs
-    easier to understand.</li>
-    
-<li>The code generator allows targets to write patterns that generate subreg
-    references directly in .td files now.</li>
-    
-<li><tt>memcpy</tt> lowering in the backend is more aggressive, particularly for
-    <tt>memcpy</tt> calls introduced by the code generator when handling
-    pass-by-value structure argument copies.</li>
-    
-<li>Inline assembly with multiple register results now returns those results
-    directly in the appropriate registers, rather than going through memory.
-    Inline assembly that uses constraints like "ir" with immediates now use the
-    'i' form when possible instead of always loading the value in a register.
-    This saves an instruction and reduces register use.</li>
+<li>Each target has been split to separate the ".s" file printing logic from the
+    rest of the target.  This enables JIT compilers that don't link in the
+    (somewhat large) code and data tables used for printing a ".s" file.</li>
 
-<li>Added support for PIC/GOT style <a 
-    href="CodeGenerator.html#tailcallopt">tail calls</a> on X86/32 and initial
-    support for tail calls on PowerPC 32 (it may also work on PowerPC 64 but is
-    not thoroughly tested).</li>
+<li>The code generator now includes a "stack slot coloring" pass, which packs
+    together individual spilled values into common stack slots.  This reduces
+    the size of stack frames with many spills, which tends to increase L1 cache
+    effectiveness.</li>
+
+<li>Various pieces of the register allocator (e.g. the coalescer and two-address
+    operation elimination pass) now know how to rematerialize trivial operations
+    to avoid copies and include several other optimizations.</li>
+
+<li>The <a href="CodeGenerator.html#selectiondag_process">graphs</a> produced by
+    the <tt>llc -view-*-dags</tt> options are now significantly prettier and
+    easier to read.</li>
+
+<li>LLVM 2.4 includes a new register allocator based on Partitioned Boolean
+    Quadratic Programming (PBQP).  This register allocator is still in
+    development, but is very simple and clean.</li>
+
 </ul>
 
 </div>
@@ -445,7 +436,7 @@
 
 <!--=========================================================================-->
 <div class="doc_subsection">
-<a name="x86specific">X86/X86-64 Specific Improvements</a>
+<a name="targetspecific">Target Specific Improvements</a>
 </div>
 
 <div class="doc_text">
@@ -453,71 +444,21 @@
 </p>
 
 <ul>
-<li>llvm-gcc's X86-64 ABI conformance is far improved, particularly in the
-    area of passing and returning structures by value.  llvm-gcc compiled code
-    now interoperates very well on X86-64 systems with other compilers.</li>
-
-<li>Support for Win64 was added. This includes code generation itself, JIT
-    support, and necessary changes to llvm-gcc.</li>
-
-<li>The LLVM X86 backend now supports the support SSE 4.1 instruction set, and
-    the llvm-gcc 4.2 front-end supports the SSE 4.1 compiler builtins.  Various
-    generic vector operations (insert/extract/shuffle) are much more efficient
-    when SSE 4.1 is enabled.  The JIT automatically takes advantage of these
-    instructions, but llvm-gcc must be explicitly told to use them, e.g. with
-    <tt>-march=penryn</tt>.</li>
-
-<li>The X86 backend now does a number of optimizations that aim to avoid
-    converting numbers back and forth from SSE registers to the X87 floating
-    point stack.  This is important because most X86 ABIs require return values
-    to be on the X87 Floating Point stack, but most CPUs prefer computation in
-    the SSE units.</li>
-
-<li>The X86 backend supports stack realignment, which is particularly useful for
-    vector code on OS's without 16-byte aligned stacks, such as Linux and
-    Windows.</li>
-
-<li>The X86 backend now supports the "sseregparm" options in GCC, which allow
-    functions to be tagged as passing floating point values in SSE
-    registers.</li>
-
-<li>Trampolines (taking the address of a nested function) now work on
-    Linux/X86-64.</li>
-
-<li><tt>__builtin_prefetch</tt> is now compiled into the appropriate prefetch
-    instructions instead of being ignored.</li>
-
-<li>128-bit integers are now supported on X86-64 targets.  This can be used
-    through <tt>__attribute__((TImode))</tt> in llvm-gcc.</li>
-
-<li>The register allocator can now rematerialize PIC-base computations, which is
-    an important optimization for register use.</li>
-
-<li>The "t" and "f" inline assembly constraints for the X87 floating point stack
-    now work.  However, the "u" constraint is still not fully supported.</li>
-
+<li>Exception handling is supported by default on Linux/x86-64.</li>
+<li>Position Independent Code (PIC) is now supported on Linux/x86-64.</li>
+<li><tt>@llvm.frameaddress</tt> now supports getting the frame address of stack frames
+    &gt; 0 on x86/x86-64.</li>
+<li>MIPS has improved a lot since last release, the most important changes
+    are: Little endian support, floating point support, allegrex core and
+    intrinsics support. O32 ABI is improved but isn't complete. The EABI 
+    was implemented and is fully supported. We also have support for small
+    sections and gp_rel relocation for its access, a threshold in bytes can be 
+    specified through command line.</li>
+<li>The PowerPC backend now supports trampolines.</li>
 </ul>
-  
+
 </div>
 
-<!--=========================================================================-->
-<div class="doc_subsection">
-<a name="targetspecific">Other Target Specific Improvements</a>
-</div>
-
-<div class="doc_text">
-<p>New target-specific features include:
-</p>
-
-<ul>
-<li>The LLVM C backend now supports vector code.</li>
-<li>The Cell SPU backend includes a number of improvements. It generates better
-    code and its stability/completeness is improving.</li>
-</ul>
-  
-</div>
-
-
 
 <!--=========================================================================-->
 <div class="doc_subsection">
@@ -529,14 +470,105 @@
 </p>
 
 <ul>
-<li>LLVM now builds with GCC 4.3.</li>
-<li>Bugpoint now supports running custom scripts (with the <tt>-run-custom</tt>
-    option) to determine how to execute the command and whether it is making
-    forward process.</li>
+<li><tt>llvmc2</tt> (the generic compiler driver) gained plugin
+    support. It is now easier to experiment with <tt>llvmc2</tt> and
+    build your own tools based on it.</li>
+
+<li>LLVM 2.4 includes a number of new generic algorithms and data structures,
+    including a scoped hash table, 'immutable' data structures, a simple
+    free-list manager, and a <tt>raw_ostream</tt> class.
+    The <tt>raw_ostream</tt> class and
+    <tt>format</tt> allow for efficient file output, and various pieces of LLVM
+    have switched over to use it.   The eventual goal is to eliminate
+    use of <tt>std::ostream</tt> in favor of it.</li>
+
+<li>LLVM 2.4 includes an optional build system based on CMake. It
+    still is in its early stages but can be useful for Visual C++
+    users who can not use the Visual Studio IDE.</li>
+
 </ul>
-  
+
 </div>
 
+<!--=========================================================================-->
+<div class="doc_subsection">
+<a name="changes">Major Changes and Removed Features</a>
+</div>
+
+<div class="doc_text">
+
+<p>If you're already an LLVM user or developer with out-of-tree changes based
+on LLVM 2.3, this section lists some "gotchas" that you may run into upgrading
+from the previous release.</p>
+
+<ul>
+
+<li>The LLVM IR generated by llvm-gcc no longer names all instructions.  This
+    makes it run faster, but may be more confusing to some people.  If you
+    prefer to have names, the '<tt>opt -instnamer</tt>' pass will add names to
+    all instructions.</li>
+
+<li>The LoadVN and GCSE passes have been removed from the tree.  They are
+    obsolete and have been replaced with the GVN and MemoryDependence passes.
+    </li>
+</ul>
+
+
+<p>In addition, many APIs have changed in this release.  Some of the major LLVM
+API changes are:</p>
+
+<ul>
+
+<li>Now, function attributes and return value attributes are managed 
+separately. Interface exported by <tt>ParameterAttributes.h</tt> header is now
+exported by <tt>Attributes.h</tt> header. The new attributes interface changes are:
+<ul>
+<li><tt>getParamAttrs</tt> method is now replaced by 
+<tt>getParamAttributes</tt>, <tt>getRetAttributes</tt> and 
+<tt>getFnAttributes</tt> methods.</li>
+<li> Return value attributes are stored at index 0. Function attributes are 
+stored at index ~0U. Parameter attributes are stored at index that matches 
+parameter number.</li>
+<li> <tt>ParamAttr</tt> namespace is now renamed as <tt>Attribute</tt>.</li>
+<li> The name of the class that manages reference count of opaque 
+attributes is changed from <tt>PAListPtr</tt> to <tt>AttrListPtr</tt>.</li>
+<li> <tt>ParamAttrsWithIndex</tt> is now renamed as <tt>AttributeWithIndex</tt>. 
+</li>
+</ul>
+</li>
+
+<li>The <tt>DbgStopPointInst</tt> methods <tt>getDirectory</tt> and
+<tt>getFileName</tt> now return <tt>Value*</tt> instead of strings. These can be
+converted to strings using <tt>llvm::GetConstantStringInfo</tt> defined via
+"<tt>llvm/Analysis/ValueTracking.h</tt>".</li>
+
+<li>The APIs to create various instructions have changed from lower case
+   "create" methods to upper case "Create" methods (e.g. 
+   <tt>BinaryOperator::create</tt>).  LLVM 2.4 includes both cases, but the
+   lower case ones are removed in mainline (2.5 and later), please migrate.</li>
+
+<li>Various header files like "<tt>llvm/ADT/iterator</tt>" were given a ".h" suffix.
+    Change your code to #include "<tt>llvm/ADT/iterator.h</tt>" instead.</li>
+
+<li>The <tt>getresult</tt> instruction has been removed and replaced with the 
+    <tt>extractvalue</tt> instruction.  This is part of support for first class 
+    aggregates.</li>
+
+<li>In the code generator, many <tt>MachineOperand</tt> predicates were renamed to be
+    shorter (e.g. <tt>isFrameIndex()</tt> -&gt; <tt>isFI()</tt>),
+    <tt>SDOperand</tt> was renamed to <tt>SDValue</tt> (and the "<tt>Val</tt>"
+    member was changed to be the <tt>getNode()</tt> accessor), and the
+    <tt>MVT::ValueType</tt> enum has been replaced with an "<tt>MVT</tt>"
+    struct. The <tt>getSignExtended</tt> and <tt>getValue</tt> methods in the
+    ConstantSDNode class were renamed to <tt>getSExtValue</tt> and
+    <tt>getZExtValue</tt> respectively, to be more consistent with
+    the <tt>ConstantInt</tt> class.</li>
+</ul>
+
+</div>
+
+
+
 <!-- *********************************************************************** -->
 <div class="doc_section">
   <a name="portability">Portability and Supported Platforms</a>
@@ -548,10 +580,10 @@
 <p>LLVM is known to work on the following platforms:</p>
 
 <ul>
-<li>Intel and AMD machines (IA32) running Red Hat Linux, Fedora Core and FreeBSD 
-      (and probably other unix-like systems).</li>
-<li>PowerPC and X86-based Mac OS X systems, running 10.3 and above in 32-bit and
-    64-bit modes.</li>
+<li>Intel and AMD machines (IA32, X86-64, AMD64, EMT-64) running Red Hat 
+Linux, Fedora Core and FreeBSD (and probably other unix-like systems).</li>
+<li>PowerPC and X86-based Mac OS X systems, running 10.3 and above in 32-bit 
+and 64-bit modes.</li>
 <li>Intel and AMD machines running on Win32 using MinGW libraries (native).</li>
 <li>Intel and AMD machines running on Win32 with the Cygwin libraries (limited
     support is available for native builds with Visual C++).</li>
@@ -575,9 +607,8 @@
 
 <div class="doc_text">
 
-<p>This section contains all known problems with the LLVM system, listed by
-component.  As new problems are discovered, they will be added to these
-sections.  If you run into a problem, please check the <a
+<p>This section contains significant known problems with the LLVM system, 
+listed by component.  If you run into a problem, please check the <a
 href="http://llvm.org/bugs/">LLVM bug database</a> and submit a bug if
 there isn't already one.</p>
 
@@ -598,7 +629,7 @@
 href="http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev">LLVMdev list</a>.</p>
 
 <ul>
-<li>The MSIL, IA64, Alpha, SPU, and MIPS backends are experimental.</li>
+<li>The MSIL, IA64, Alpha, SPU, MIPS, and PIC16 backends are experimental.</li>
 <li>The llc "<tt>-filetype=asm</tt>" (the default) is the only supported
     value for this option.</li>
 </ul>
@@ -625,8 +656,6 @@
     to <a href="http://llvm.org/PR2255">several</a>
     <a href="http://llvm.org/PR2257">bugs</a> due to lack of support for the
     'u' inline assembly constraint and X87 floating point inline assembly.</li>
-  <li>The X86-64 backend does not yet support position-independent code (PIC)
-      generation on Linux targets.</li>
   <li>The X86-64 backend does not yet support the LLVM IR instruction
       <tt>va_arg</tt>. Currently, the llvm-gcc front-end supports variadic
       argument constructs on X86-64 by lowering them manually.</li>
@@ -684,6 +713,20 @@
 
 <!-- ======================================================================= -->
 <div class="doc_subsection">
+  <a name="mips-be">Known problems with the MIPS back-end</a>
+</div>
+
+<div class="doc_text">
+
+<ul>
+<li>The O32 ABI is not fully supported.</li>
+<li>64-bit MIPS targets are not supported yet.</li>
+</ul>
+
+</div>
+
+<!-- ======================================================================= -->
+<div class="doc_subsection">
   <a name="alpha-be">Known problems with the Alpha back-end</a>
 </div>
 
@@ -707,7 +750,7 @@
 <ul>
 <li>The Itanium backend is highly experimental, and has a number of known
     issues.  We are looking for a maintainer for the Itanium backend.  If you
-    are interested, please contact the llvmdev mailing list.</li>
+    are interested, please contact the LLVMdev mailing list.</li>
 </ul>
 
 </div>
@@ -740,7 +783,7 @@
 
 <p>llvm-gcc does not currently support <a href="http://llvm.org/PR869">Link-Time
 Optimization</a> on most platforms "out-of-the-box".  Please inquire on the
-llvmdev mailing list if you are interested.</p>
+LLVMdev mailing list if you are interested.</p>
 
 <p>The only major language feature of GCC not supported by llvm-gcc is
     the <tt>__builtin_apply</tt> family of builtins.   However, some extensions
@@ -765,13 +808,26 @@
 itself, Qt, Mozilla, etc.</p>
 
 <ul>
-<li>Exception handling works well on the X86 and PowerPC targets, including
-X86-64 darwin.  This works when linking to a libstdc++ compiled by GCC.  It is
-supported on X86-64 linux, but that is disabled by default in this release.</li>
+<li>Exception handling works well on the X86 and PowerPC targets. Currently
+  only Linux and Darwin targets are supported (both 32 and 64 bit).</li>
 </ul>
 
 </div>
 
+<!-- ======================================================================= -->
+<div class="doc_subsection">
+  <a name="fortran-fe">Known problems with the llvm-gcc Fortran front-end</a>
+</div>
+
+<div class="doc_text">
+<ul>
+<li>Fortran support generally works, but there are still several unresolved bugs
+    in Bugzilla.  Please see the tools/gfortran component for details.</li>
+    
+<li>The Fortran front-end currently does not build on Darwin (without tweaks)
+    due to unresolved dependencies on the C front-end.</li>
+</ul>
+</div>
 
 <!-- ======================================================================= -->
 <div class="doc_subsection">
@@ -788,11 +844,10 @@
 which does support trampolines.</li>
 <li>The Ada front-end <a href="http://llvm.org/PR2007">fails to bootstrap</a>.
 Workaround: configure with --disable-bootstrap.</li>
-<li>The c380004 and <a href="http://llvm.org/PR2010">c393010</a> ACATS tests
-fail (c380004 also fails with gcc-4.2 mainline).  When built at -O3, the
-<a href="http://llvm.org/PR2421">cxg2021</a> ACATS test also fails.</li>
-<li>Some gcc specific Ada tests continue to crash the compiler.  The testsuite
-reports most tests as having failed even though they pass.</li>
+<li>The c380004, <a href="http://llvm.org/PR2010">c393010</a>
+and <a href="http://llvm.org/PR2421">cxg2021</a> ACATS tests fail
+(c380004 also fails with gcc-4.2 mainline).</li>
+<li>Some gcc specific Ada tests continue to crash the compiler.</li>
 <li>The -E binder option (exception backtraces)
 <a href="http://llvm.org/PR1982">does not work</a> and will result in programs
 crashing if an exception is raised.  Workaround: do not use -E.</li>
