From: Chris Lattner
Date: Thu, 8 Oct 2009 06:27:53 +0000 (+0000)
Subject: checkpoint, this is still not comprehendible.
X-Git-Url: http://plrg.eecs.uci.edu/git/?a=commitdiff_plain;h=7b0a6816e7eeb9b2923706f65557e55d96f7246f;p=oota-llvm.git
checkpoint, this is still not comprehendible.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83530 91177308-0d34-0410-b5e6-96231b3b80d8
---
diff --git a/docs/ReleaseNotes-2.6.html b/docs/ReleaseNotes-2.6.html
index 1ac46e8c36c..5549914df40 100644
--- a/docs/ReleaseNotes-2.6.html
+++ b/docs/ReleaseNotes-2.6.html
@@ -52,26 +52,8 @@ current one. To see the release notes for a specific release, please see the
- Many new papers added to /pubs/
- Machine LICM, hoists things like constant pool loads, loads from readonly stubs, vector constant synthesization code, etc.
- Machine Sinking
- Regalloc improvements for commuting, various spiller peephole optimizations, cross-class coalescing.
- Support for debug line numbers when optimization enabled
- gold lto plugin
-
- target-specific intrinsics (r63765)
- llc -enable-value-prop, propagation of value info (sign/zero ext info) from one MBB to another
- interpreter + libffi
- LLVMContext
- Preliminary support for addrspace 256 -> GS, 257 -> FS, known problems: CodeGenerator.html#x86_memory
-
-Add support for the PowerPC 64-bit SVR4 ABI.
-
- NSW/NUW/exact div
- Inbounds for GEP
- SRoA improvements for vector unions, memset, arbitrary weird bitfield accesses etc. It now produces "strange" sized integers.
- pre-alloc splitter??
- X86: Support for softfloat modes, typically used by OS kernels.
+
+
MC:
MCSection, MCAsmInfo
MCInstPrinter did it make it in?
@@ -83,94 +65,23 @@ Add support for the PowerPC 64-bit SVR4 ABI.
ELF Writer? How stable?
- LSR promotes int induction variables to 64-bit on 64-bit targets, major perf boost for numerical code.
- LSR now analyzes pointer expressions (e.g. getelementptrs), not just integers.
- Stack slot coloring for register spills (denser stack frames)
- SelectionDAGS: New BuildVectorSDNode (r65296), and ISD::VECTOR_SHUFFLE (r69952 / PR2957)
- New PrettyStackTrace, crashes of llvm tools should give some indication of what the compiler was doing at the time of the crash (e.g. running a pass), and print out command line arguments.
- new linkage types linkonce_odr, weak_odr, linker_private, and available_externally.
- Inliner reuse stack space when inlining arrays?
-
- Regalloc hints for allocation stuff: Evan r73381/r73671. Finished/enabled?
- API Cleanup:
- no use of hash_set/hash_map, no more llvm::OStream
- Use raw_ostream for everything, killed off llvm/Streams.h and DOUT
-
- Mips now supports O32 Calling Convention
-
- StringRef class, Twine class.
- New BlackFin backend.
-
+APIs:
+
Shrink wrapping support in PEI, what is the state of it?
- X86-64: better modeling of implicit zero extensions, eliminates a lot of redundant zexts
- X86-64 TLS support for local exec and initial exec.
- X86 - Better modeling of H registerts as subregs.
- Getelementpr instruction now allows any integer type for array/pointer indexes.
-
- include/llvm/Analysis/LiveValues.h => dead??
- lib/Analysis/LoopVR.cpp ==> dead??
- include/llvm/CodeGen/LazyLiveness.h ==> dead?
- lib/Transforms/IPO/MergeFunctions.cpp ==> dead?
- llvm/Analysis/PointerTracking.h ==> dead??
- PRedSimplify -> Ask vmkit if it is still useful and for testcases.
-
- ARM calling convention code is now tblgen generated instead of manual.
- ARM: NEON support. neonfp for doing single precision fp with neon instead of VFP.
- Tblgen now supports multiclass inheritance.
- Unladen swallow as user?
- Loop index split disabled by default?
-
- New WeakVH and AssertingVH and CallbackVH classes.
- New llvm/ADT/Triple class.
- Removed the IA64 backend.
- Profile info improvements by Andreas Neustifter.
- PostRA scheduler improvements David Goodwin.
+
- New MSP430 and SystemZ backends.
- llvm-gcc now supports a new TCE target.
- klee web page at klee.llvm.org
- New llvm/System/Atomic.h, llvm/System/RWMutex.h for portable atomic ops, rw locks.
- llvm_start_multithreaded: ProgrammersMAnual.html#threading
-
- Tablegen now supports a number of new string and list operations like
- !(subst), !(foreach), !car, !cdr, !null, !if, !cast.
- New fadd, fsub, fmul instructions and classes.
- New MachineVerifier pass.
- Enabled GVN Load PRE.
- ARM AAPCS-VFP hard float ABI is supported.
-
LLVM build now builds all libraries as .a files instead of some
libraries as relinked .o files. This requires some APIs like
InitializeAllTargets.h. TargetRegistry!
-
- ARM Thumb2 support: status?
- CBE status: not part of the release criteria.
-
- New SourceMgr, SMLoc classes for simple parsers with caret diagnostics and #include support, (used by
- tablegen, llvm-mc, the .ll parser, FileCheck, etc)
- FileCheck! + CHECK-NEXT
- New compiler-rt project.
- New Static Single Information (SSI) construction pass (not used by anything yet, experimental).
- llvm_report_error() error handling API (llvm/Support/ErrorHandling.h)
-
- x86: Vector icmp/fcmp now work with SSE codegen.
- X86: all global variable reference logic is now in ClassifyGlobalReference.
- JIT support for oprofile (r75279), configure with --with-oprofile. Now we get line # and function info for JIT'd functions.
- Mention gcc plugin.
-
- New EngineBuilder class for creating JITs: r76276 Reid Kleckner
-
- -asm-verbose now prints location info (with -g) and loop nest info.
- JIT now supports generating more than 16M of code.
-
-removed the BigBlock register allocator, it had bitrotted.
-Target intrinsics can now return multiple results.
-
- SSE 4.2 support.
- Ada bindings for LLVM IR.
- Many extensions to the C APIs.
+
@@ -406,6 +321,7 @@ machine code using LLVM's JIT.
minor improvements. Some of the major improvements and new features are listed
in this section.
+
@@ -418,7 +334,15 @@ in this section.
LLVM 2.6 includes several major new capabilities:
-- Something wonderful!
+- Support for debug line numbers when optimization enabled
+- gold lto plugin
+- New MSP430 and SystemZ backends.
+- New BlackFin backend.
+- LLVMContext, llvm_start_multithreaded: ProgrammersManual.html#threading
+- Unladen swallow as user?
+- klee web page at klee.llvm.org
+- FileCheck
+- New compiler-rt project.
- LLVM 2.6 includes a brand new experimental LLVM bindings to the Ada2005 programming language.
@@ -453,7 +377,14 @@ includes support for the C, C++, Objective-C, Ada, and Fortran front-ends.
can be useful if you are writing a front-end for LLVM:
-- Something wonderful!
+- Getelementpr instruction now allows any integer type for array/pointer indexes.
+- Inbounds for GEP
+- NSW/NUW/exact div
+- LSR promotes int induction variables to 64-bit on 64-bit targets, major perf boost for numerical code.
+- LSR now analyzes pointer expressions (e.g. getelementptrs), not just integers.
+- new linkage types linkonce_odr, weak_odr, linker_private, and available_externally.
+- New fadd, fsub, fmul instructions and classes.
+- Target intrinsics can now return multiple results.
@@ -470,7 +401,11 @@ release includes a few major enhancements and additions to the optimizers:
-- Something wonderful!
+- SRoA improvements for vector unions, memset, arbitrary weird bitfield accesses etc. It now produces "strange" sized integers.
+- Inliner reuse stack space when inlining arrays?
+- Enabled GVN Load PRE.
+- New Static Single Information (SSI) construction pass (not used by anything yet, experimental).
+
@@ -489,7 +424,22 @@ it run faster:
-- Something wonderful!
+- -asm-verbose now prints location info (with -g) and loop nest info.
+- Tblgen now supports multiclass inheritance and a number of new string and
+ list operations like !(subst), !(foreach), !car, !cdr, !null, !if, !cast.
+ These make the .td files more expressive and allow more aggressive factoring
+ of duplication across instruction patterns.
+- New MachineVerifier pass.
+- Machine LICM, hoists things like constant pool loads, loads from readonly stubs, vector constant synthesization code, etc.
+- Machine Sinking
+- target-specific intrinsics (r63765)
+- Regalloc improvements for commuting, various spiller peephole optimizations, cross-class coalescing.
+- llc -enable-value-prop, propagation of value info (sign/zero ext info) from one MBB to another
+- Regalloc hints for allocation stuff: Evan r73381/r73671. Finished/enabled?
+- Stack slot coloring for register spills (denser stack frames)
+- SelectionDAGS: New BuildVectorSDNode (r65296), and ISD::VECTOR_SHUFFLE (r69952 / PR2957)
+- PostRA scheduler improvements David Goodwin.
+
@@ -504,7 +454,16 @@ it run faster:
-- Something wonderful!
+- Preliminary support for addrspace 256 -> GS, 257 -> FS, known problems: CodeGenerator.html#x86_memory
+- Support for softfloat modes, typically used by OS kernels.
+
+- X86-64: better modeling of implicit zero extensions, eliminates a lot of redundant zexts
+- X86-64 TLS support for local exec and initial exec.
+- Better modeling of H registerts as subregs.
+- Vector icmp/fcmp now work with SSE codegen.
+- SSE 4.2 support.
+- all global variable reference logic is now in ClassifyGlobalReference.
+
@@ -519,18 +478,18 @@ it run faster:
-- Something wonderful!
+- Support for floating-point, indirect function calls, and
+ passing/returning aggregate types to functions.
+
- The code generator is able to generate debug info into output COFF files.
+
- Support for placing an object into a specific section or at a specific
+ address in memory.
Things not yet supported:
-- Floating point.
-- Passing/returning aggregate types to and from functions.
- Variable arguments.
-- Indirect function calls.
- Interrupts/programs.
-- Debug info.
@@ -554,21 +513,74 @@ AAPCS-VFP "hard float" calling conventions are also supported with the
and subject to change. The Neon intrinsics, in particular, may change in future
releases of LLVM.
+
+ ARM AAPCS-VFP hard float ABI is supported.
+ ARM calling convention code is now tblgen generated instead of manual.
+ ARM: NEON support. neonfp for doing single precision fp with neon instead of VFP.
+
+
+
+
+
+
New features of other targets include:
+
+
+
+- Add support for the PowerPC 64-bit SVR4 ABI.
+- Mips now supports O32 Calling Convention.
+
+
+
-
New features include:
-- Something wonderful!
+- New EngineBuilder class for creating JITs: r76276
+ New PrettyStackTrace, crashes of llvm tools should give some indication of what the compiler was doing at the time of the crash (e.g. running a pass), and print out command line arguments.
+ StringRef class, Twine class.
+ New WeakVH and AssertingVH and CallbackVH classes.
+ New llvm/ADT/Triple class.
+ llvm_report_error() error handling API (llvm/Support/ErrorHandling.h)
+ New llvm/System/Atomic.h, llvm/System/RWMutex.h for portable atomic ops, rw locks.
+ New SourceMgr, SMLoc classes for simple parsers with caret diagnostics and #include support, (used by
+ tablegen, llvm-mc, the .ll parser, FileCheck, etc)
+
+
+
+
+
+
+
+
Other miscellaneous features include:
+
+
+- interpreter + libffi
+- JIT now supports generating more than 16M of code.
+- Users can now register
+a JITEventListener
+to receive callbacks when the JIT emits or frees machine code. The
+OProfile support uses this mechanism.
+ JIT support for oprofile (r75279), configure with --with-oprofile. Now we get line # and function info for JIT'd functions.
+
+- Profile info improvements by Andreas Neustifter.
+- Many extensions to the C APIs.
@@ -587,14 +599,23 @@ from the previous release.
-- Something horrible!
-
+- The Itanium (IA64) backend has been removed. It was not supported and
+ bitrotted.
+- The BigBlock register allocator has been removed, it also bitrotted.
+- The C Backend (-march=c) is no longer considered part of the LLVM release
+criteria. We still want it to work, but no one is maintaining it and it lacks
+support for arbitrary precision integers and other important IR features.
In addition, many APIs have changed in this release. Some of the major LLVM
API changes are:
+
+ API Cleanup:
+ no use of hash_set/hash_map, no more llvm::OStream
+ Use raw_ostream for everything, killed off llvm/Streams.h and DOUT
+
- LLVM's global uniquing tables for Types and Constants have
been privatized into members of an LLVMContext. A number of APIs
@@ -724,7 +745,7 @@ using the stock GCC 3.x.x series 'out the box',
See: Broken versions of GCC and other tools.
However, A Modern GCC Build
for x86/x64 has been made available from the third party AuroraUX Project
-that has been meticulously tested for bootstrapping LLVM & Clang.
+that has been meticulously tested for bootstrapping LLVM & Clang.
@@ -809,9 +830,6 @@ processors, thumb programs can crash or produce wrong
results (PR1388).
Compilation for ARM Linux OABI (old ABI) is supported but not fully tested.
-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.