From 60893e5fe94d7566f56e360f5ccc780ab4861b43 Mon Sep 17 00:00:00 2001
From: Chris Lattner
Date: Fri, 18 May 2007 06:33:02 +0000
Subject: [PATCH] crank out notes
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37218 91177308-0d34-0410-b5e6-96231b3b80d8
---
docs/ReleaseNotes.html | 261 +++++++++++++++++++++--------------------
1 file changed, 133 insertions(+), 128 deletions(-)
diff --git a/docs/ReleaseNotes.html b/docs/ReleaseNotes.html
index ece81630f7f..fa3317bb6e6 100644
--- a/docs/ReleaseNotes.html
+++ b/docs/ReleaseNotes.html
@@ -72,16 +72,23 @@ and .bc formats within the 2.x release series, like we did within the 1.x
series.
There are several significant change to the LLVM IR and internal APIs, such
as a major overhaul of the type system, the completely new bitcode file
- format, etc.
+ format, etc (described below).
We designed the release around a 6 month release cycle instead of the usual
3-month cycle. This gave us extra time to develop and test some of the
more invasive features in this release.
-LLVM 2.0 no longer supports the llvm-gcc3 front-end.
+LLVM 2.0 no longer supports the llvm-gcc3 front-end. Users are required to
+ upgrade to llvm-gcc4. llvm-gcc4 includes many features over
+ llvm-gcc3, is faster, and is much easier to
+ build from source.
Note that while this is a major version bump, this release has been
extensively tested on a wide range of software. It is easy to say that this
- is our best release yet, in terms of both features and correctness.
+ is our best release yet, in terms of both features and correctness. This is
+ the first LLVM release to correctly compile and optimize major software like
+ LLVM itself, Mozilla/Seamonkey, Qt 4.3rc1, kOffice, etc out of the box on
+ linux/x86.
+
@@ -93,26 +100,27 @@ series.
@@ -162,29 +170,20 @@ Improvements
New features include:
-- The pass manager has been entirely rewritten, making it significantly
- smaller, simpler, and more extensible. Support has been added to run
- FunctionPasses interlaced with CallGraphSCCPasses.
-
-- The -scalarrepl pass can now promote unions containing FP values into
- a register, it can also handle unions of vectors of the same size.
-
-- The predicate simplifier pass has been improved, making it able to do
- simple value range propagation and eliminate more conditionals.
+- The pass manager has been entirely
+ rewritten, making it significantly smaller, simpler, and more extensible.
+ Support has been added to run FunctionPasses interlaced with
+ CallGraphSCCPasses, and we now support loop transformations explicitly with
+ LoopPass.
-- There is a new new LoopPass class. The passmanager has been
- modified to support it, and all existing loop xforms have been
- converted to use it.
+- The -scalarrepl pass can now promote unions containing FP values
+ into a register, it can also handle unions of vectors of the same
+ size.
-- There is a new loop rotation pass, which converts "for loops" into
+
- LLVM 2.0 includes a new loop rotation pass, which converts "for loops" into
"do/while loops", where the condition is at the bottom of the loop.
+- The Loop Strength Reduction pass has been improved, and support added
+ for sinking expressions across blocks to reduce register pressure.
+
- ModulePasses may now use the result of FunctionPasses.
-- The [Post]DominatorSet classes have been removed from LLVM and clients switched to use the far-more-efficient ETForest class instead.
+- The [Post]DominatorSet classes have been removed from LLVM and clients
+ switched to use the far-more-efficient ETForest class instead.
-- The ImmediateDominator class has also been removed, and clients have been switched to use DominatorTree instead.
+- The ImmediateDominator class has also been removed, and clients have been
+ switched to use DominatorTree instead.
+
+- The predicate simplifier pass has been improved, making it able to do
+ simple value range propagation and eliminate more conditionals.
@@ -235,40 +239,27 @@ New features include:
-- Support for Zero-cost DWARF exception handling has been added. It is mostly
- complete and just in need of continued bug fixes and optimizations at
- this point.
-- Progress has been made on a direct Mach-o .o file writer. Many small
- apps work, but it is not quite complete yet.
-
-- Support was added for software floating point routines.
-
-- DWARF debug information generation has been improved. LLVM now passes
- most of the GDB testsuite on MacOS and debug info is more dense.
+- Support was added for software floating point, which allows LLVM to target
+ chips that don't have hardware FPUs (e.g. ARM thumb mode).
- A new register scavenger has been implemented, which is useful for
finding free registers after register allocation. This is useful when
rewriting frame references on RISC targets, for example.
- Heuristics have been added to avoid coalescing vregs with very large live
- ranges to physregs.
+ ranges to physregs. This was bad because it effectively pinned the physical
+ register for the entire lifetime of the virtual register (PR711).
- Support now exists for very simple (but still very useful)
rematerialization the register allocator, enough to move
instructions like "load immediate" and constant pool loads.
-- Significantly improved 'switch' lowering, improving codegen for
+
- Switch statement lowering is significantly better, improving codegen for
sparse switches that have dense subregions, and implemented support
for the shift/and trick.
-- The code generator now has more accurate and general hooks for
- describing addressing modes ("isLegalAddressingMode") to
- optimizations like loop strength reduction and code sinking.
-
-- The Loop Strength Reduction pass has been improved, and support added
- for sinking expressions across blocks to reduce register pressure.
-
- Added support for tracking physreg sub-registers and super-registers
in the code generator, as well as extensive register
allocator changes to track them.
@@ -278,6 +269,37 @@ New features include:
+
+Other improvements include:
+
+
+
+
+- Inline assembly support is much more solid that before.
+ The two primary features still missing are support for 80-bit floating point
+ stack registers on X86 (PR879), and
+ support for inline asm in the C backend (PR802).
+
+- DWARF debug information generation has been improved. LLVM now passes
+ most of the GDB testsuite on MacOS and debug info is more dense.
+
+- Codegen support for Zero-cost DWARF exception handling has been added (PR592). It is mostly
+ complete and just in need of continued bug fixes and optimizations at
+ this point. However, support in llvm-g++ is disabled with an
+ #ifdef for the 2.0 release (PR870).
+
+- The code generator now has more accurate and general hooks for
+ describing addressing modes ("isLegalAddressingMode") to
+ optimizations like loop strength reduction and code sinking.
+
+- Progress has been made on a direct Mach-o .o file writer. Many small
+ apps work, but it is still not quite complete.
+
+
+
In addition, the LLVM target description format has itself been extended in
several ways:
@@ -303,44 +325,39 @@ Improvements
-
X86-Specific Code Generator Enhancements:
+
X86-specific Code Generator Enhancements:
+- The MMX instruction set is now supported through intrinsics.
- The scheduler was improved to better reduce register pressure on
- X86 and other targets that are register pressure sensitive
-- Linux/x86-64 support has been improved.
+ X86 and other targets that are register pressure sensitive.
+- Linux/x86-64 support is much better.
- PIC support for linux/x86 has been added.
-- Support now exists for the GCC regparm attribute, and code in the X86
- backend to respect it.
-- Various improvements have been made for the X86-64 JIT, allowing it to
- generate code in the large code model
+- The X86 backend now supports the GCC regparm attribute.
- LLVM now supports inline asm with multiple constraint letters per operand
(like "ri") which is common in X86 inline asms.
-- Early support has been added for X86 inline asm in the C backend.
-- Added support for the X86 MMX instruction set.
-
-
ARM-Specific Code Generator Enhancements:
-
+
ARM-specific Code Generator Enhancements:
-- Several improvements have been made to the ARM backend, including basic
- inline asm support, weak linkage support, static ctor/dtor support and
- many bug fixes.
-- There are major enhancements to the ARM backend, including support for ARM
- v4-v6, vfp support, soft float, pre/postinc support, load/store multiple
- generation, constant pool entry motion (to support large functions),
- and enhancements to ARM constant island pass.
-
-- Added support for Thumb code generation (an ARM subtarget).
-- More aggressive size analysis for ARM inline asm strings was
- implemented.
+- The ARM code generator is now stable and fully supported.
+
+- There are major new features, including support for ARM
+ v4-v6 chips, vfp support, soft float point support, pre/postinc support,
+ load/store multiple generation, constant pool entry motion (to support
+ large functions), and inline asm support, weak linkage support, static
+ ctor/dtor support and many bug fixes.
+- Added support for Thumb code generation (llc -march=thumb).
+
+- The ARM backend now supports the ARM AAPCS/EABI ABI and PIC codegen on
+ arm/linux.
+
+- Several bugs were fixed for DWARF debug info generation on arm/linux.
-
Other Target-Specific Code Generator Enhancements:
-
+
PowerPC-specific Code Generator Enhancements:
- The PowerPC 64 JIT now supports addressing code loaded above the 2G
@@ -350,19 +367,7 @@ Improvements
functional now. llvm-gcc and static compilation are not fully supported
yet though.
-