+<a name="newfeatures">New Features in LLVM 1.7</a>
+</div>
+
+<!--_________________________________________________________________________-->
+<div class="doc_subsubsection"><a name="llvmgcc4">GCC4.0-based llvm-gcc
+front-end</a></div>
+
+<div class="doc_text">
+
+<p>LLVM 1.7 includes a brand new llvm-gcc, based on GCC 4.0.1. This version
+of llvm-gcc solves many serious long-standing problems with llvm-gcc, including
+all of those blocked by the <a href="http://llvm.org/PR498">llvm-gcc 4 meta
+bug</a>. In addition, llvm-gcc4 implements support for many new features,
+including GCC inline assembly, generic vector support, SSE and Altivec
+intrinsics, and several new GCC attributes. Finally, llvm-gcc4 is
+significantly faster than llvm-gcc3, respects -O options, its -c/-S options
+correspond to GCC's (they emit native code), supports Objective C/C++, and
+it has debugging support well underway.</p>
+
+<p>If you can use it, llvm-gcc4 offers significant new functionality, and we
+hope that it will replace llvm-gcc3 completely in a future release.
+Unfortunately, it does not currently support C++ exception handling at all, and
+it only works on Apple Mac OS/X machines with X86 or PowerPC processors.
+</p>
+
+</div>
+
+<!--_________________________________________________________________________-->
+<div class="doc_subsubsection"><a name="inlineasm">Inline Assembly
+Support</a></div>
+
+<div class="doc_text">
+
+<p>The LLVM IR and llvm-gcc4 front-end now fully support arbitrary GCC <a
+href="LangRef.html#inlineasm">inline assembly</a>. The LLVM X86 and PowerPC
+code generators have initial support for it,
+being able to compile basic statements, but are missing some features. Please
+report any inline asm statements that crash the compiler or that are miscompiled
+as bugs.</p>
+
+</div>
+
+<!--_________________________________________________________________________-->
+<div class="doc_subsubsection"><a name="newsparc">New SPARC backend</a></div>
+
+<div class="doc_text">
+
+<p>LLVM 1.7 includes a new, fully functional, SPARC backend built in the
+target-independent code generator. This SPARC backend includes support for
+SPARC V8 and SPARC V9 subtargets (controlling whether V9 features can be used),
+and targets the 32-bit SPARC ABI.</p>
+
+<p>The LLVM 1.7 release is the last release that will include the LLVM "SparcV9"
+backend, which was the very first LLVM native code generator. It will
+be removed in LLVM 1.8, being replaced with the new SPARC backend.</p>
+
+</div>
+
+<!--_________________________________________________________________________-->
+<div class="doc_subsubsection"><a name="genvector">Generic Vector Support
+</a></div>
+
+<div class="doc_text">
+
+<p>LLVM now includes significantly extended support for SIMD vectors in its
+core instruction set. It now includes three new instructions for manipulating
+vectors: <a href="LangRef.html#i_extractelement"><tt>extractelement</tt></a>,
+<a href="LangRef.html#i_insertelement"><tt>insertelement</tt></a>, and
+<a href="LangRef.html#i_shufflevector"><tt>shufflevector</tt></a>. Further,
+many bugs in vector handling have been fixed, and vectors are now supported by
+the target-independent code generator. For example, if a vector operation is
+not supported by a particular target, it will be correctly broken down and
+executed as scalar operations.</p>
+
+<p>Because llvm-gcc3 does not support GCC generic vectors or vector intrinsics,
+llvm-gcc4 must be used.</p>
+</div>
+
+
+<!--_________________________________________________________________________-->
+<div class="doc_subsubsection"><a name="ssealtivec">Intel SSE and PowerPC
+Altivec support
+</a></div>
+
+<div class="doc_text">
+
+<p>The LLVM X86 backend now supports Intel SSE 1, 2, and 3, and now uses scalar
+SSE operations to implement scalar floating point math when the target supports
+SSE1 (for floats) or SSE2 (for doubles). Vector SSE instructions are generated
+by llvm-gcc4 when the generic vector mechanism or specific SSE intrinsics are
+used.
+</p>
+
+<p>The LLVM PowerPC backend now supports the Altivec instruction set, including
+both GCC -maltivec and -faltivec modes. Altivec instructions are generated
+by llvm-gcc4 when the generic vector mechanism or specific Altivec intrinsics
+are used.
+</p>
+
+</div>
+
+<!--_________________________________________________________________________-->
+<div class="doc_subsubsection"><a name="optimizernew">Optimizer
+Improvements</a></div>
+
+<div class="doc_text">
+<ul>
+<li>The Loop Unswitching pass (<tt>-loop-unswitch</tt>) has had several bugs
+ fixed, has several new features, and is enabled by default in llvmgcc3
+ now.</li>
+<li>The Loop Strength Reduction pass (<tt>-loop-reduce</tt>) is now enabled for
+ the X86 and Alpha backends.</li>
+<li>The Instruction Combining pass (<tt>-instcombine</tt>) now includes a
+ framework and implementation for simplifying code based on whether computed
+ bits are demanded or not.</li>
+<li>The Scalar Replacement of Aggregates pass (<tt>-scalarrepl</tt>) can now
+ promote simple unions to registers.</li>
+<li>The Reassociation pass (<tt>-reassociate</tt>) can now
+ factor expressions, e.g. turning "A*A+A*B" into "A*(A+B)".</li>
+<li>Several LLVM passes are <a href="http://llvm.org/PR681">significantly
+faster</a>.</li>
+</ul>
+</div>
+
+<!--_________________________________________________________________________-->
+<div class="doc_subsubsection"><a name="codgennew">Code Generator
+Improvements</a></div>
+
+<div class="doc_text">
+<ul>
+<li>LLVM has a new prepass (before register allocation) list scheduler, which
+ supports bottom-up and top-down scheduling, pluggable priority functions and
+ pluggable hazard recognizers. The X86 backend uses this to reduce register
+ pressure and RISC targets schedule based on operation latency.</li>
+<li>The tblgen-based target description framework introduced in LLVM 1.6 has
+ several new features, useful for targets that can fold loads and stores into
+ operations, and features that make the .td files more expressive.</li>
+<li>The instruction selector is significantly faster in 1.7 than in 1.6.</li>
+<li>The X86, Alpha and Itanium backends use new DAG-DAG instruction selectors,
+ making them easier to maintain and generate slightly better code.</li>
+<li>The X86 backend now supports generation of Scalar SSE code for scalar FP
+ expressions. LLVM provides significantly better performance with Scalar SSE
+ instructions than it does with the Intel floating point stack
+ instructions.</li>
+<li>The Itanium backend now has a bundling pass, which improves performance
+ by ~10% and reduces code size (previously it unconditionally inserted a stop
+ bit after every instruction).</li>
+</ul>
+</div>
+
+<!--_________________________________________________________________________-->
+<div class="doc_subsubsection"><a name="othernew">Other New Features</a></div>
+
+<div class="doc_text">
+<ul>
+<li>The Mac OS/X PowerPC and X86 backends now have initial support for
+ Darwin DWARF
+ debugging information, however, debug info generation has been disabled for
+ the 1.7 release in llvmgcc4.</li>
+<li>LLVM includes the new <a href="docs/CommandGuide/html/llvm-config.html">
+ llvm-config</a> utility, which makes it easier to build and link programs
+ against the LLVM libraries when not using the LLVM makefiles.</li>
+<li>LLVM now supports first class global ctor/dtor initialization lists, no
+ longer forcing targets to use "__main".</li>
+<li>LLVM supports assigning globals and functions to a particular section
+ in the result executable using the GCC section attribute.</li>
+<li><a href="ExtendingLLVM.html">Adding intrinsics to LLVM</a> is now
+ significantly easier.</li>
+<li>llvmgcc4 now fully supports C99 Variable Length Arrays, including dynamic
+ stack deallocation.</li>
+
+</ul>
+</div>
+
+
+<!--=========================================================================-->
+<div class="doc_subsection">
+<a name="changes">Significant Changes in LLVM 1.7</a>
+</div>
+
+<div class="doc_text">
+<ul>
+<li>The official LLVM URL is now <a href="http://llvm.org/">
+ http://llvm.org/</a>.</li>
+<li>The LLVM intrinsics used to be overloaded based on type: for example,
+ <a href="LangRef.html#int_ctpop"><tt>llvm.ctpop</tt></a> could work with any
+ integer datatype. They are now separated into different intrinsics with
+ suffixes to denote their argument type (e.g. <tt>llvm.ctpop.i32</tt>)). Old
+ LLVM .ll and .bc files that use these intrinsics will continue to work with
+ new LLVM versions (they are transparently upgraded by the parsers), but will
+ cause a warning to be emitted.</li>
+<li>The <tt>llvm.readport</tt>, <tt>llvm.writeport</tt>, <tt>llvm.readio</tt>,
+ and <tt>llvm.writeio</tt> intrinsics have been removed. The first two
+ were ever only supported by the X86 backend, the last two were never
+ correctly supported by any target, and none were accessible through the
+ C front-end. Inline assembly support can now be used to
+ implement these operations.</li>
+<li>The <tt>llvm-db</tt> tool had basic support for stepping through code, which
+ used the JIT. This code has been removed, and DWARF emission support added
+ instead. <tt>llvm-db</tt> still exists in CVS if someone wanted to write a
+ <tt>ptrace</tt> backend for it.</li>
+</ul>