From 6fd928d133fcc86ccb2c902e2e83dbe4dcb92bae Mon Sep 17 00:00:00 2001
From: Chris Lattner
Date: Wed, 21 Apr 2010 05:17:40 +0000
Subject: rough pass moving stuff into relevant sections, still much editing to
do.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101987 91177308-0d34-0410-b5e6-96231b3b80d8
---
docs/ReleaseNotes.html | 243 ++++++++++++++++++++++++++-----------------------
1 file changed, 127 insertions(+), 116 deletions(-)
(limited to 'docs')
diff --git a/docs/ReleaseNotes.html b/docs/ReleaseNotes.html
index ba283d6..736ef37 100644
--- a/docs/ReleaseNotes.html
+++ b/docs/ReleaseNotes.html
@@ -60,10 +60,6 @@ main LLVM web page, this document applies to the next release, not the
current one. To see the release notes for a specific release, please see the
releases page.
-
-FIXME: llvm.org moved to new server, mention new logo, Ted and Doug new code
- owners, web page in llvm-www repos.
-
@@ -79,14 +75,9 @@ Almost dead code.
@@ -393,87 +403,25 @@ in this section.
LLVM 2.7 includes several major new capabilities:
+New MicroBlaze backend. http://en.wikipedia.org/wiki/MicroBlaze
-Extensible metadata solid.
+Extensible metadata solid.
-Debug info improvements: using metadata instead of llvm.dbg global variables.
-This brings several enhancements including improved compile times.
+Debug info improvements: using metadata instead of llvm.dbg global variables.
+This brings several enhancements including improved compile times.
-New instruction selector.
-GHC Haskell ABI/ calling conv support.
-Pre-Alpha support for unions in IR.
-New InlineHint and StackAlignment function attributes
-Code generator MC'ized except for debug info and EH.
-New SCEV AA pass: -scev-aa
-Inliner reuses arrays allocas when inlining multiple callers to reduce stack usage.
+Indirect branch + address of label (blog post), particularly useful for
+interpreters.
+
+New instruction selector.
+
+
+libllvm2.7.so?? configure with --enable-shared
MC encoding and disassembler apis.
-Optimal Edge Profiling?
-Instcombine is now a library, has its own IRBuilder to simplify itself.
-New llvm/Support/Regex.h API. FileCheck now does regex's
-Many subtle pointer invalidation bugs in Callgraph have been fixed and it now uses asserting value handles.
MC Disassembler (with blog post), MCInstPrinter. Many X86 backend and AsmPrinter simplifications
-Various tools like llc and opt now read either .ll or .bc files as input.
-Malloc and free instructions got removed, along with LowerAllocations pass.
-compiler-rt support for ARM.
-completely llvm-gcc NEON support.
Can transcode from GAS to intel syntax with "llvm-mc foo.s -output-asm-variant=1"
-JIT debug information with GDB 7.0
-New CodeGen Level CSE
-CMake can now run tests, what other improvements?
-ARM/Thumb using reg scavenging for stack object address materialization (PEI).
-New SSAUpdater and MachineSSAUpdater classes for unstructured ssa updating,
- changed jump threading, GVN, etc to use it which simplified them and speed
- them up.
-Combiner-AA improvements, why not on by default?
-Pre-regalloc tail duplication
-x86 sibcall / tailcall optimization in CCC mode.
-New LSR with "full strength reduction" mode. Description?
-Codegen level OptimizeExtsPass pass, takes advantage of x86 subregs.
-Better code size analysis in loop unswitch, inliner code split out to a new
- CodeMetrics class for reuse.
-The ARM backend now has good support for ARMv4 backend (tested on StrongARM
- hardware), previously only supported ARMv4T and newer.
-Half-float support in APFloat
-Indirect branch + address of label (blog post), particularly useful for interpreters.
-Many changes to the pass ordering for improved optimization effectiveness.
-BasicAA improved to be less dependent on "type safe" pointers, it can now look
- through bitcasts more aggressively.
-GVN PHI Translation improvements. blog post: http://blog.llvm.org/2009/12/advanced-topics-in-redundant-load.html
-llvm.objectsize.
-MachineSSAUpdater.h
-PostRA scheduler for X86?
-llvm.dbg.value, not being used by default though, more in 2.8. Many improvements to debug info
-Support for the GCC option -fno-schedule-insns
-non-temporal load/store
-libllvm2.7.so?? configure with --enable-shared
-dbgs() and -debug-buffer-size=N
-New MicroBlaze backend. http://en.wikipedia.org/wiki/MicroBlaze
-XMM subreg modeling for extraction of the low element.
-
-
-Opt now works conservatively if no target data is set (is this fully working?)
-Target data now has notion of 'native' integer data types which optimizations can use.
-ARM backend generates instructions in unified assembly syntax.
-New Analysis/InstructionSimplify.h interface for simplifying instructions that don't exist.
-Jump threading is now much more aggressive at simplifying correlated
- conditionals and threading blocks with otherwise complex logic. CondProp pass
- removed (functionality merged into jump threading).
-X86 and XCore supports returning arbitrary return values, returning too many values is
- supported by returning through a hidden pointer.
-verbose-asm now produces information about spill slots and loop nests
-Defaults to RTTI off (smaller code size!), packagers should build with make REQUIRE_RTTI=1.
-AndersAA got removed
-PredSimplify, LoopVR, GVNPRE, RSProfiling (random sampling profiling) got removed.
-LLVM command line tools now overwrite their output, before they would only do this with -f.
-DOUT removed, use DEBUG(errs() instead.
-Much stuff converted to use raw_ostream instead of std::ostream.
-TargetAsmInfo renamed to MCAsmInfo
-llvm/ADT/iterator.h gone.
-
@@ -487,7 +435,13 @@ llvm/ADT/iterator.h gone.
expose new optimization opportunities:
-- ...
+- New InlineHint and StackAlignment function attributes
+Half-float support in APFloat
+llvm.objectsize.
+New llvm/Support/Regex.h API. FileCheck now does regex's
+Pre-Alpha support for unions in IR.
+dbgs() and -debug-buffer-size=N
+
@@ -505,10 +459,28 @@ release includes a few major enhancements and additions to the optimizers:
- ...
+Inliner reuses arrays allocas when inlining multiple callers to reduce stack usage.
+Optimal Edge Profiling?
+Instcombine is now a library, has its own IRBuilder to simplify itself.
+Better code size analysis in loop unswitch, inliner code split out to a new
+ CodeMetrics class for reuse.
+Many changes to the pass ordering for improved optimization effectiveness.
+BasicAA improved to be less dependent on "type safe" pointers, it can now look
+ through bitcasts more aggressively.
+GVN PHI Translation improvements. blog post: http://blog.llvm.org/2009/12/advanced-topics-in-redundant-load.html
+New SCEV AA pass: -scev-aa
+Target data now has notion of 'native' integer data types which optimizations can use.
+Opt now works conservatively if no target data is set (is this fully working?)
+New Analysis/InstructionSimplify.h interface for simplifying instructions that don't exist.
+Jump threading is now much more aggressive at simplifying correlated
+ conditionals and threading blocks with otherwise complex logic. CondProp pass
+ removed (functionality merged into jump threading).
+New SSAUpdater and MachineSSAUpdater classes for unstructured ssa updating,
+ changed jump threading, GVN, etc to use it which simplified them and speed
+ them up.
-
-Also, -anders-aa was removed
+
@@ -521,15 +493,21 @@ release includes a few major enhancements and additions to the optimizers:
+- The JIT now supports generating debug information, which is compatible with
+the new GDB 7.0 (and later) interfaces for registering debug info for
+dynamically generated code.
+
- The JIT now defaults
to compiling eagerly to avoid a race condition in the lazy JIT.
Clients that still want the lazy JIT can switch it on by calling
ExecutionEngine::DisableLazyCompilation(false).
+
- It is now possible to create more than one JIT instance in the same process.
These JITs can generate machine code in parallel,
although you
still have to obey the other threading restrictions.
+
@@ -547,45 +525,42 @@ it run faster:
-
-
-
-
+Code generator MC'ized except for debug info and EH.
-
-
New features of the X86 target include:
-
+New CodeGen Level CSE
+Combiner-AA improvements, why not on by default?
+Pre-regalloc tail duplication
+New LSR with "full strength reduction" mode. Description?
+Codegen level OptimizeExtsPass pass, takes advantage of x86 subregs.
+Support for the GCC option -fno-schedule-insns
+non-temporal load/store
+MachineSSAUpdater.h
+X86 and XCore supports returning arbitrary return values, returning too many values is
+ supported by returning through a hidden pointer.
+verbose-asm now produces information about spill slots and loop nests
+GHC Haskell ABI / calling conv support.
+Many improvements to debug info
-
-
-
New features of the PIC16 target include:
+
New features of the X86 target include:
-
Things not yet supported:
+
PostRA scheduler for X86?
+
x86 sibcall / tailcall optimization in CCC mode.
+
X86: XMM subreg modeling for extraction of the low element.
-
-- Variable arguments.
-- Interrupts/programs.
@@ -601,7 +576,12 @@ it run faster:
-- ...
+- complete llvm-gcc NEON support.
+- ARM/Thumb using reg scavenging for stack object address materialization
+ (PEI).
+- The ARM backend now has good support for ARMv4 backend (tested on StrongARM
+ hardware), previously only supported ARMv4T and newer.
+- ARM backend generates instructions in unified assembly syntax.
@@ -649,7 +629,13 @@ it run faster:
Other miscellaneous features include:
-- ...
+- LLVM command line tools now overwrite their output by default, before they
+ would only do this with -f. This makes them more convenient to use, and
+ behave more like standard unix tools.
+
+- The opt and llc tools now autodetect whether their input is a .ll or .bc
+ file, and automatically do the right thing. This means you don't need to
+ explicitly use the llvm-as tool for most things.
@@ -667,18 +653,45 @@ on LLVM 2.6, this section lists some "gotchas" that you may run into upgrading
from the previous release.
+
+-
+The Andersen's alias analysis ("anders-aa") pass, the Predicate Simplifier
+("predsimplify") pass, the LoopVR pass, the GVNPRE pass, and the random sampling
+profiling ("rsprofiling") passes have all been removed. They were not being
+actively maintained and had substantial problems. If you are interested in
+these components, you are welcome to ressurect them from SVN, fix the
+correctness problems, and resubmit them to mainline.
+
+- LLVM now defaults to building most libraries with RTTI turned off, providing
+a code size reduction. Packagers who are interested in building LLVM to support
+plugins that require RTTI information should build with "make REQUIRE_RTTI=1"
+and should read the new Advice on Packaging LLVM
+document.
+
- The LLVM interpreter now defaults to not using libffi even
if you have it installed. This makes it more likely that an LLVM built on one
system will work when copied to a similar system. To use libffi,
-configure with --enable-libffi.
-
-
+configure with --enable-libffi.
+
+Debug information uses a completely different representation, an LLVM 2.6
+.bc file should work with LLVM 2.7, but debug info won't come forward.
+The LLVM 2.6 (and earlier) "malloc" and "free" instructions got removed,
+ along with LowerAllocations pass. Now you should just use a call to the
+ malloc and free functions in libc. These calls are optimized as well as
+ the old instructions were.
+
In addition, many APIs have changed in this release. Some of the major LLVM
API changes are:
+- Just about everything has been converted to use raw_ostream instead of
+ std::ostream.
+- llvm/ADT/iterator.h has been removed, just use <iterator>
+ instead.
+- The Streams.h file and "DOUT" got removed, use "DEBUG(errs() << ...);"
+ instead.
- ModuleProvider has been removed
and its methods moved to Module and GlobalValue.
@@ -698,8 +711,6 @@ Clients must replace calls to
GlobalValue::hasNotBeenReadFromBitcode with
GlobalValue::isMaterializable.
-- FIXME: Debug info has been totally redone. Add pointers to new APIs. Substantial caveats about compatibility of .ll and .bc files.
-
- The llvm/Support/DataTypes.h header has moved
to llvm/System/DataTypes.h.
--
cgit v1.1