From 57a460e63d170a67debc10199f6477adef7ba57a Mon Sep 17 00:00:00 2001
From: Chris Lattner
Date: Wed, 23 May 2007 04:39:32 +0000
Subject: [PATCH] final updates
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37299 91177308-0d34-0410-b5e6-96231b3b80d8
---
docs/ReleaseNotes.html | 90 ++++++++++++++++++++++--------------------
1 file changed, 47 insertions(+), 43 deletions(-)
diff --git a/docs/ReleaseNotes.html b/docs/ReleaseNotes.html
index 09f54764b03..c3449e51e96 100644
--- a/docs/ReleaseNotes.html
+++ b/docs/ReleaseNotes.html
@@ -32,10 +32,10 @@
This document contains the release notes for the LLVM compiler
-infrastructure, release 2.0. Here we describe the status of LLVM, including any
-known problems and major improvements from the previous release. All LLVM
+infrastructure, release 2.0. 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 LLVM
-releases web site.
+releases web site.
For more information about LLVM, including information about the latest
release, please check out the main LLVM
@@ -153,7 +153,7 @@ series.
configure llvm-gcc on linux are no longer needed, and special hacks to build
large C++ libraries like Qt are not needed.
-LLVM now has a new MSIL backend. llc -march=msil will now turn LLVM
+LLVM now has a new MSIL backend. llc -march=msil will now turn LLVM
into MSIL (".net") bytecode. This is still fairly early development
with a number of limitations.
@@ -202,30 +202,30 @@ Improvements
- 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.
+ Support has been added to run FunctionPasses interlaced with
+ CallGraphSCCPasses, we now support loop transformations
+ explicitly with LoopPass, and ModulePasses may now use the
+ result of FunctionPasses.
+
+- 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 we now support
+ sinking expressions across blocks to reduce register pressure.
- The -scalarrepl pass can now promote unions containing FP values
into a register, it can also handle unions of vectors of the same
size.
-- 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.
+ switched to use the more-efficient ETForest class 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.
+ simple value range propagation and eliminate more conditionals. However,
+ note that predsimplify is not enabled by default in llvm-gcc.
@@ -242,7 +242,7 @@ New features include:
-- Support was added for software floating point, which allows LLVM to target
+
- LLVM now supports 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
@@ -262,8 +262,8 @@ New features include:
sparse switches that have dense subregions, and implemented support
for the shift/and trick.
-- Added support for tracking physreg sub-registers and super-registers
- in the code generator, as well as extensive register
+
- LLVM now supports tracking physreg sub-registers and super-registers
+ in the code generator, and includes extensive register
allocator changes to track them.
- There is initial support for virtreg sub-registers
@@ -306,7 +306,7 @@ Other improvements include:
several ways:
-- Extended TargetData to support better target parameterization in
+
- TargetData now supports better target parameterization in
the .ll/.bc files, eliminating the 'pointersize/endianness' attributes
in the files (PR761).
@@ -338,7 +338,7 @@ Improvements
- PIC support for linux/x86 has been added.
- 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.
+ (like "mri") which is common in X86 inline asms.
ARM-specific Code Generator Enhancements:
@@ -349,14 +349,16 @@ Improvements
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
+ large functions), 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.
+
PowerPC-specific Code Generator Enhancements:
@@ -413,7 +415,7 @@ following major changes:
- Pass registration is slightly different in LLVM 2.0 (you now need an
- intptr_t in your constructor), as explained in the intptr_t in your constructor), as explained in the Writing an LLVM Pass
document.
@@ -425,7 +427,8 @@ following major changes:
replaced by Type::Int8Ty, Type::Int16Ty, etc. LLVM types
have always corresponded to fixed size types
(e.g. long was always 64-bits), but the type system no longer includes
- information about the sign of the type.
+ information about the sign of the type. Also, the
+ Type::isPrimitiveType() method now returns false for integers.
- Several classes (CallInst, GetElementPtrInst,
ConstantArray, etc), that once took std::vector as
@@ -438,7 +441,7 @@ following major changes:
This avoids creation of a temporary vector (and a call to malloc/free). If
- you have an std::vector, use code like this:
+ you have an std::vector, use code like this:
std::vector<Value*> Ops = ...;
GEP = new GetElementPtrInst(BasePtr, &Ops[0], Ops.size());
@@ -446,13 +449,14 @@ following major changes:
-- CastInst is now abstract and its functionality is split into several parts,
- one for each of the new cast
- instructions.
+- CastInst is now abstract and its functionality is split into
+ several parts, one for each of the new
+ cast instructions.
- Instruction::getNext()/getPrev() are now private (along with
BasicBlock::getNext, etc), for efficiency reasons (they are now no
- longer just simple pointers). Please use BasicBlock::iterator, etc instead.
+ longer just simple pointers). Please use BasicBlock::iterator, etc
+ instead.
- Module::getNamedFunction() is now called
@@ -475,14 +479,14 @@ following major changes:
LLVM is known to work on the following platforms:
- - Intel and AMD machines running Red Hat Linux, Fedora Core and FreeBSD
+
- Intel and AMD machines running Red Hat Linux, Fedora Core and FreeBSD
(and probably other unix-like systems).
-- Intel and AMD machines running on Win32 using MinGW libraries (native)
-- Sun UltraSPARC workstations running Solaris 8.
-- Intel and AMD machines running on Win32 with the Cygwin libraries (limited
- support is available for native builds with Visual C++).
- PowerPC and X86-based Mac OS X systems, running 10.2 and above in 32-bit and
64-bit modes.
+- Intel and AMD machines running on Win32 using MinGW libraries (native)
+- Intel and AMD machines running on Win32 with the Cygwin libraries (limited
+ support is available for native builds with Visual C++).
+- Sun UltraSPARC workstations running Solaris 8.
- Alpha-based machines running Debian GNU/Linux.
- Itanium-based machines running Linux and HP-UX.
@@ -527,7 +531,8 @@ components, please contact us on the -filetype=asm" (the default) is the only supported value for the
@@ -561,7 +566,7 @@ components, please contact us on the PowerPC backend does not correctly
implement ordered FP comparisons.
- The Linux PPC32/ABI support needs testing for the interpreter and static
-compilation, and lacks Dwarf debugging informations.
+compilation, and lacks support for debug information.
@@ -574,14 +579,13 @@ compilation, and lacks Dwarf debugging informations.
-- The Thumb mode works only on ARMv6 or higher processors. On sub-ARMv6
-processors, any thumb program compiled with LLVM crashes or produces wrong
-results. (PR1388)
+- Thumb mode works only on ARMv6 or higher processors. On sub-ARMv6
+processors, thumb program can crash or produces wrong
+results (PR1388).
- Compilation for ARM Linux OABI (old ABI) is supported, but not fully tested.
-- QEMU-ARM (<= 0.9.0) wrongly executes programs compiled with LLVM. A non-affected QEMU version must be used or this
-
-patch must be applied on QEMU.
+- There is a bug in QEMU-ARM (<= 0.9.0) which causes it to incorrectly execute
+programs compiled with LLVM. Please use more recent versions of QEMU.