From: Chris Lattner
Date: Mon, 16 May 2005 16:56:09 +0000 (+0000)
Subject: more edits, include stuff from the status update
X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=bf307010c5e0c7da519039aa46ab95c0b981f97a;p=oota-llvm.git
more edits, include stuff from the status update
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22086 91177308-0d34-0410-b5e6-96231b3b80d8
---
diff --git a/docs/ReleaseNotes.html b/docs/ReleaseNotes.html
index 9c0824fbcd5..99d720903df 100644
--- a/docs/ReleaseNotes.html
+++ b/docs/ReleaseNotes.html
@@ -62,10 +62,9 @@ href="http://llvm.cs.uiuc.edu/releases/">releases page.
This is the sixth public release of the LLVM Compiler Infrastructure.
- At this time, LLVM is known to correctly compile a wide range of C and C++
-programs, including the SPEC CPU95 & 2000 suite. It includes bug fixes for
-those problems found since the 1.4 release and a large number of new features
-and enhancements, described below.
+LLVM 1.5 is known to correctly compile a wide range of C and C++ programs,
+includes bug fixes for those problems found since the 1.4 release, and includes
+a large number of new features and enhancements, described below.
@@ -101,7 +100,7 @@ easy to get wrong) details of writing the instruction selector, such as
generating efficient code for getelementptr instructions, promoting
small integer types to larger types (e.g. for RISC targets with one size of
-integer registers), expanding 64-bit integer operations for 32-bit hosts, etc.
+integer registers), expanding 64-bit integer operations for 32-bit targets, etc.
Currently, the X86, PowerPC, Alpha, and IA-64 backends use this framework. The
SPARC backends will be migrated when time permits.
@@ -138,7 +137,7 @@ Proper Tail Calls
href="http://doi.acm.org/10.1145/277650.277719">proper tail calls, as
required to implement languages like Scheme. Tail calls make use of two
features: custom calling conventions (described above), which allow the code
-generator to emit code for the caller to deallocate its own stack when it
+generator to use a convention where the caller deallocates its stack before it
returns. The second feature is a flag on the call
instruction, which indicates that the callee does not access the caller's
stack frame (indicating that it is acceptable to deallocate the caller stack
@@ -149,11 +148,11 @@ than the caller, etc. The only case not supported are varargs calls, but that
could be added if desired.
-In order for a front-end to get guaranteed tail call, it must mark functions
-as "fastcc", mark calls with the 'tail' marker, and follow the call with a
-return of the called value (or void). The optimizer and code generator attempt
-to handle more general cases, but the simple case will always work if the code
-generator supports tail calls. Here is a simple example:
+In order for a front-end to get a guaranteed tail call, it must mark
+functions as "fastcc", mark calls with the 'tail' marker, and follow the call
+with a return of the called value (or void). The optimizer and code generator
+attempt to handle more general cases, but the simple case will always work if
+the code generator supports tail calls. Here is an example:
fastcc int %bar(int %X, int(double, int)* %FP) { ; fastcc
@@ -198,7 +197,8 @@ multiple of 8 bytes in size.
LLVM 1.5 is now about 15% faster than LLVM 1.4 and its core data
structures use about 30% less memory.
Support for Microsoft Visual Studio is improved, and now documented.
+ href="GettingStartedVS.html">now documented. Most LLVM tools build
+ natively with Visual C++ now.
Configuring LLVM to build a subset
of the available targets is now implemented, via the
--enable-targets= option.
@@ -215,7 +215,13 @@ multiple of 8 bytes in size.
LLVM now includes workarounds in the code generator generator which
reduces the likelyhood of GCC
hitting swap during optimized builds.
- The PowerPC backend generates far better code than in LLVM 1.4.
+ The LLVM
+ Transformation Visualizer (llvm-tv) project has been updated to
+ work with LLVM CVS.
+ Nightly tester output is now archived on the
+ llvm-testresults mailing list.
+
@@ -226,31 +232,62 @@ multiple of 8 bytes in size.
-- The -globalopt pass now promotes non-address-taken static globals that are
-only accessed in main to SSA registers.
-
- The new -simplify-libcalls pass improves code generated for well-known
library calls. The pass optimizes calls to many of the string, memory, and
standard I/O functions (e.g. replace the calls with simpler/faster calls) when
possible, given information known statically about the arguments to the call.
+- The -globalopt pass now promotes non-address-taken static globals that are
+only accessed in main to SSA registers.
+
- Loops with trip counts based on array pointer comparisons (e.g. "for (i
-= 0; &A[i] != &A[100]; ++i) ...") are optimized better than before,
+= 0; &A[i] != &A[n]; ++i) ...") are optimized better than before,
which primarily helps iterator-intensive C++ codes.
-- The code generator now can provide and use information about commutative
-two-address instructions when performing register allocation.
-
- The optimizer now eliminates simple cases where redundant conditions exist
-between neighboring blocks.
+ between neighboring blocks.
- The reassociation pass (which turns (1+X+3) into (X+1+3) among other
-things), is more aggressive an intelligent.
-
+things), is more aggressive and intelligent.
+
+- The -prune-eh pass now detects no-return functions in addition to the
+ no-unwind functions it did before.
+
+- The -globalsmodref alias analysis generates more precise results in some
+ cases.
+
+
+
+
+
+
+
+
+
+- The code generator now can provide and use information about commutative
+ two-address instructions when performing register allocation.
+
+- The code generator now tracks function live-in registers explicitly,
+ instead of requiring the target to generate 'implicit defs' at the
+ entry to a function.
+
+- The code generator can lower integer division by a constant to
+ multiplication by a magic constant and multiplication by a constant into
+ shift/add sequences.
+
+- The code generator compiles fabs/fneg/sin/cos/sqrt to assembly instructions
+ when possible.
+
+- The PowerPC backend generates better code in many cases, making use of
+ FMA instructions and the recording ("dot") forms of various PowerPC
+ instructions.
+
Significant Bugs Fixed in LLVM 1.5
@@ -266,7 +303,7 @@ things), is more aggressive an intelligent.
[instcombine] miscompilation of
setcc or setcc in one case
Transition code for LLVM 1.0 style varargs was removed from the .ll file
- parser. LLVM 1.0 bytecode files are still supported.
+ parser. LLVM 1.0 bytecode files are still supported.
Code Generator Bugs:
@@ -277,6 +314,7 @@ things), is more aggressive an intelligent.
respect 'volatile'.
The JIT sometimes miscompiled globals and constant pool entries for
64-bit integer constants on 32-bit hosts.
+
The C backend should no longer produce code that crashes ICC 8.1.
Bugs in the C/C++ front-end: