diff --git a/docs/ReleaseNotes.html b/docs/ReleaseNotes.html
index 2573dc88213..385e6357636 100644
--- a/docs/ReleaseNotes.html
+++ b/docs/ReleaseNotes.html
@@ -67,7 +67,6 @@ current one. To see the release notes for a specific release, please see the
Almost dead code.
include/llvm/Analysis/LiveValues.h => Dan
lib/Transforms/IPO/MergeFunctions.cpp => consider for 2.8.
- llvm/Analysis/PointerTracking.h => Edwin wants this, consider for 2.8.
GEPSplitterPass
-->
@@ -82,79 +81,6 @@ Almost dead code.
-
-
@@ -253,10 +179,10 @@ libgcc routines).
All of the code in the compiler-rt project is available under the standard LLVM
-License, a "BSD-style" license. New in LLVM 2.8:
-
-Soft float support
-
+License, a "BSD-style" license. New in LLVM 2.8, compiler_rt now supports
+soft floating point (for targets that don't have a real floating point unit),
+and includes an extensive testsuite for the "blocks" language feature and the
+blocks runtime included in compiler_rt.
@@ -526,10 +452,6 @@ organization changes have happened:
LLVM 2.8 includes several major new capabilities:
-- atomic lowering pass.
-- RegionInfo pass: opt -regions analyze" or "opt -view-regions".
-
-- ARMGlobalMerge:
- llvm-diff
@@ -546,6 +468,13 @@ expose new optimization opportunities:
+ memcpy, memmove, and memset now take address space qualified pointers + volatile.
+ per-instruction debug info metadata is much faster and uses less space (new DebugLoc class).
+ New "trap values" concept: http://llvm.org/docs/LangRef.html#trapvalues
+ New linker_private_weak and linker_private_weak_def_auto linkage types
+ Triples are now stored in normalized form. Triple::normalize.
+
+
- LLVM 2.8 changes the internal order of operands in InvokeInst
and CallInst.
@@ -612,6 +541,14 @@ release includes a few major enhancements and additions to the optimizers:
+ Preliminary work on TBAA but not usable in 2.8.
+ New CorrelatedValuePropagation pass, not on by default in 2.8 yet.
+ JumpThreading much more aggressive about implied value relations.
+ New RegionInfo pass "opt -regions analyze" or "opt -view-regions".
+ Improved trip count analysis for <= and >= loops, and uses sign overflow info.
+ llvm.dbg.value: variable debug info for optimized code
+ Now iterate function passes when a cgsccpassmanager detects a devirtualization
+ Atomic lowering patch: -loweratomic (see Passes.html#loweratomic)
@@ -639,22 +576,38 @@ release includes a few major enhancements and additions to the optimizers:
-FIXME: Rewrite.
-
-The LLVM Machine Code (aka MC) sub-project of LLVM was created to solve a number
+The LLVM Machine Code (aka MC) subsystem was created to solve a number
of problems in the realm of assembly, disassembly, object file format handling,
and a number of other related areas that CPU instruction-set level tools work
-in. It is a sub-project of LLVM which provides it with a number of advantages
-over other compilers that do not have tightly integrated assembly-level tools.
-For a gentle introduction, please see the
+
+The MC subproject has made great leaps in LLVM 2.8. For example, support for
+ directly writing .o files from LLC (and clang) now works reliably for
+ darwin/x86[-64] (including inline assembly support) and the integrated
+ assembler is turned on by default in Clang for these targets. This provides
+ improved compile times among other things.
+
+
+- The entire compiler has converted over to using the MCStreamer assembler API
+ instead of writing out a .s file textually.
+- The "assembler parser" is far more mature than in 2.7, supporting a full
+ complement of directives, now supports assembler macros, etc.
+- The "assembler backend" has been completed, including support for relaxation
+ relocation processing and all the other things that an assembler does.
+- The MachO file format support is now fully functional and works.
+- The MC disassembler now fully supports ARM and Thumb. ARM assembler support
+ is still in early development though.
+- The X86 MC assembler now supports the X86 AES and AVX instruction set.
+- Work on ELF and COFF support is well underway, but isn't useful yet in LLVM
+ 2.8. Please contact the llvmdev mailing list if you're interested in
+ this.
+
+
+For more information, please see the Intro to the
LLVM MC Project Blog Post.
-2.8 status here. Basic correctness, some obscure missing instructions on
- mainline, on by default in clang.
- Entire compiler backend converted to use mcstreamer.
-
@@ -671,7 +624,36 @@ infrastructure, which allows us to implement more aggressive algorithms and make
it run faster:
-- MachO writer works.
+
+
+ MachineCSE tuned and on by default.
+
+ Rewrote tblgen's type inference for backends to be more consistent and
+ diagnose more target bugs. This also allows limited support for writing
+ patterns for instructions that return multiple results, e.g. a virtual
+ register and a flag result. Stuff that used 'parallel' before should use
+ this.
+
+ New -regalloc=fast, =local got removed
+ New -regalloc=default option that chooses a register allocator based on the -O optimization level.
+ New SubRegIndex tblgen class for targets -> jakob
+
+ Bottom up fast isel. Simple Load reuse. No more machinedce.
+ IR ABI: <3 x float> is passed as <4 x float> instead of 3 floats.
+
+ New COPY instruction. copyRegToReg -> copyPhysReg, isMoveInstr is gone.
+ RenderMachineFunction: -rendermf
+ SplitKit?
+ Evan: Teach bottom up pre-ra scheduler to track register pressure. Work in progress.
+ Evan: Add an ILP scheduler. On x86_64, this is a win for all tests in CFP2000. It also sped up 256.bzip2 by 16%.
+
+ New OptimizeExts+OptimizeCmps -> PeepholeOptimizer pass
+ New LocalStackSlotAllocation.cpp pass (jimg)
+ Atomics now get legalized when not natively supported (jim g)
+
+ -ffunction-sections and -fdata-sections are supported on ELF targets.
+ -momit-leaf-frame-pointer now supported.
+
@@ -689,6 +671,30 @@ it run faster:
in registers across basic blocks, dramatically improving performance of code
that uses long double, and when targetting CPUs that don't support SSE.
+ New SSEDomainFix pass:
+ On Nehalem and newer CPUs there is a 2 cycle latency penalty on using a
+ register in a different domain than where it was defined. Some instructions
+ have equvivalents for different domains, like por/orps/orpd. The
+ SSEDomainFix pass tries to minimize the number of domain crossings by
+ changing between equvivalent opcodes where possible.
+
+ X86 backend attempts to promote 16-bit integer operations to 32-bits to avoid
+ 0x66 prefixes, which are slow on some microarchitectures and bloat the code
+ on others.
+
+ New support for X86 "thiscall" calling convention (x86_thiscallcc in IR) for windows.
+
+ New llvm.x86.int intrinsic (for int $42 and int3)
+
+ Verbose assembly decodes X86 shuffle instructions, e.g.:
+ insertps $113, %xmm3, %xmm0 ## xmm0 = zero,xmm0[1,2],xmm3[1]
+ unpcklps %xmm1, %xmm0 ## xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1]
+ pshufd $1, %xmm1, %xmm1 ## xmm1 = xmm1[1,0,0,0]
+
+ X86 ABI: <2 x float> in IR no longer maps onto MMX, it turns into <4 x float>
+
+ new GHC calling convention
+
@@ -704,6 +710,14 @@ it run faster: