aboutsummaryrefslogtreecommitdiffstats
path: root/docs/ReleaseNotes.html
diff options
context:
space:
mode:
authorChris Lattner <sabre@nondot.org>2008-06-08 02:45:07 +0000
committerChris Lattner <sabre@nondot.org>2008-06-08 02:45:07 +0000
commit0b83220aecf2873c31172c1b92e9cdbf06949f35 (patch)
treef96d874b96e16669f82d31833e79578a521a5cf1 /docs/ReleaseNotes.html
parente90ea5e81fb09663f8589b638998ef3a3cb16953 (diff)
downloadexternal_llvm-0b83220aecf2873c31172c1b92e9cdbf06949f35.zip
external_llvm-0b83220aecf2873c31172c1b92e9cdbf06949f35.tar.gz
external_llvm-0b83220aecf2873c31172c1b92e9cdbf06949f35.tar.bz2
add some notes.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52087 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'docs/ReleaseNotes.html')
-rw-r--r--docs/ReleaseNotes.html124
1 files changed, 86 insertions, 38 deletions
diff --git a/docs/ReleaseNotes.html b/docs/ReleaseNotes.html
index 470f38d..9d66b6d 100644
--- a/docs/ReleaseNotes.html
+++ b/docs/ReleaseNotes.html
@@ -84,9 +84,22 @@ upgrading LLVM 1.9 files to LLVM 2.x syntax, but you can always use a previous
LLVM release to do this. One nice impact of this is that the LLVM regression
test suite no longer depends on llvm-upgrade, which makes it run faster.</p>
-<p>LLVM 2.3 renames the LLVMBuilder and LLVMFoldingBuilder classes to
- IRBuilder.</p>
+<p>LLVM API Changes:</p>
+<ul>
+<li>Several core LLVM IR classes have migrated to use 'FOOCLASS::Create(...)'
+ instead of 'new FOOCLASS(...)' (e.g. where FOOCLASS=BasicBlock). We hope to
+ standardize on FOOCLASS::Create for all IR classes in the future, but not
+ all of them have been moved over yet.</li>
+<li>LLVM 2.3 renames the LLVMBuilder and LLVMFoldingBuilder classes to
+ IRBuilder.</li>
+<li>MRegisterInfo was renamed to TargetRegisterInfo.</li>
+<li>The MappedFile class is gone, please use MemoryBuffer instead.</li>
+<li>The '-enable-eh' flag to LLC has been removed. Now code should encode
+ whether it is safe to not generate unwind information for a function by
+ tagging the Function object with the 'nounwind' attribute.</li>
+
+</ul>
</div>
<!--=========================================================================-->
@@ -172,7 +185,8 @@ this project, please see its <a href="http://clang.llvm.org/">web site</a>.</p>
Common linkage?
-Atomic operation support, Alpha, X86, X86-64, PowerPC. "__sync_synchronize"
+Atomic operation support, Alpha, X86, X86-64, PowerPC. "__sync_synchronize",
+"__sync_val_compare_and_swap", etc"
<ul>
<li>The C and Ocaml bindings have received additional improvements. The
@@ -184,31 +198,6 @@ over the LLVM IR, target data, and parameter attribute lists.</li>
<!--=========================================================================-->
<div class="doc_subsection">
-<a name="codegen">Code Generator Improvements</a>
-</div>
-
-<div class="doc_text">
-
-<p>We put a significant amount of work into the code generator infrastructure,
-which allows us to implement more aggressive algorithms and make it run
-faster:</p>
-
-<ul>
-<li>MemOperand in the code generator: describe me!.</li>
-<li>The target-independent code generator infrastructure now uses LLVM's APInt
- class to handle integer values, which allows it to support integer types
- larger than 64 bits. Note that support for such types is also dependent on
- target-specific support. Use of APInt is also a step toward support for
- non-power-of-2 integer sizes.</li>
-<li>Several compile time speedups for code with large basic blocks.</li>
-<li>Several improvements which make llc's <tt>--view-sunit-dags</tt>
- visualization of scheduling dependency graphs easier to understand.</li>
-</ul>
-
-</div>
-
-<!--=========================================================================-->
-<div class="doc_subsection">
<a name="optimizer">Optimizer Improvements</a>
</div>
@@ -234,17 +223,69 @@ for (i = LB; i < NUB; ++i)
LOOP_BODY
</pre>
</li>
-<li>LLVM includes a new <tt>memcpy</tt> optimization pass which optimizes out dead
-<tt>memcpy</tt> calls, unneeded copies of aggregates, and handles the return slot
-optimization. The LLVM optimizer now notices long sequences of consequtive
-stores and merges them into <tt>memcpy</tt>s where profitable.</li>
+
+<li>LLVM includes a new <tt>memcpy</tt> optimization pass which optimizes out
+dead <tt>memcpy</tt> calls, unneeded copies of aggregates, and handles the
+return slot optimization. The LLVM optimizer now notices long sequences of
+consequtive stores and merges them into <tt>memcpy</tt>s where profitable.</li>
+
<li>Alignment detection for vector memory references and for <tt>memcpy</tt> and
<tt>memset</tt> is now more aggressive.</li>
-<li>The aggressive dead code elimination (ADCE) optimization has been rewritten to make
-it both faster and safer in the presence of code containing infinite loops.
-Some of its prior functionality has been factored out into the loop deletion
-pass, which <em>is</em> safe for infinite loops.</li>
+<li>The aggressive dead code elimination (ADCE) optimization has been rewritten
+to make it both faster and safer in the presence of code containing infinite
+loops. Some of its prior functionality has been factored out into the loop
+deletion pass, which <em>is</em> safe for infinite loops.</li>
+
+<li>Several optimizations have been sped up, leading to faster code generation
+ with the same code quality.</li>
+
+<li>The 'SimplifyLibCalls' pass, which optimizes calls to libc and libm
+ functions for C-based languages, has been rewritten to be a FunctionPass
+ instead a ModulePass. This allows it to be run more often and to be
+ included at -O1 in llvm-gcc. It was also extended to include more
+ optimizations and several corner case bugs are fixed.</li>
+
+<li>LLVM now includes a simple 'Jump Threading' pass, which attemps to simplify
+ the conditional branches with information about predecessor blocks. This
+ simplifies the control flow graph. This pass is pretty basic at this point,
+ but catches some important cases and provides a foundation to build off
+ of.</li>
+</ul>
+
+</div>
+
+<!--=========================================================================-->
+<div class="doc_subsection">
+<a name="codegen">Code Generator Improvements</a>
+</div>
+
+<div class="doc_text">
+
+<p>We put a significant amount of work into the code generator infrastructure,
+which allows us to implement more aggressive algorithms and make it run
+faster:</p>
+
+<ul>
+<li>MemOperand in the code generator: describe me!.</li>
+
+<li>The target-independent code generator infrastructure now uses LLVM's APInt
+ class to handle integer values, which allows it to support integer types
+ larger than 64 bits. Note that support for such types is also dependent on
+ target-specific support. Use of APInt is also a step toward support for
+ non-power-of-2 integer sizes.</li>
+
+<li>Several compile time speedups for code with large basic blocks.</li>
+
+<li>Several improvements which make llc's <tt>--view-sunit-dags</tt>
+ visualization of scheduling dependency graphs easier to understand.</li>
+
+<li>The code generator allows targets to write patterns that generate subreg
+ references directly in .td files now.</li>
+
+<li><tt>memcpy</tt> lowering in the backend is more aggressive, particularly for
+ <tt>memcpy</tt> calls introduced by the code generator when handling
+ pass-by-value structure argument copies.</li>
</ul>
</div>
@@ -265,7 +306,11 @@ pass, which <em>is</em> safe for infinite loops.</li>
now interoperates very well on X86-64 systems with other compilers.</li>
<li>The LLVM X86 backend now supports the support SSE 4.1 instruction set, and
- the llvm-gcc 4.2 front-end supports the SSE 4.1 compiler builtins.</li>
+ the llvm-gcc 4.2 front-end supports the SSE 4.1 compiler builtins. Various
+ generic vector operations (insert/extract/shuffle) are much more efficient
+ when SSE 4.1 is enabled. The JIT automatically takes advantage of these
+ instructions, but llvm-gcc must be explicitly told to use them, e.g. with
+ <tt>-march=penryn</tt>.</li>
<li>The X86 backend now does a number of optimizations that aim to avoid
converting numbers back and forth from SSE registers to the X87 floating
@@ -286,6 +331,8 @@ pass, which <em>is</em> safe for infinite loops.</li>
<li>128-bit integers are now supported on x86-64 targets.</li>
+<li>The register allocator can now rematerialize PIC-base computations.</li>
+
</ul>
</div>
@@ -320,7 +367,8 @@ pass, which <em>is</em> safe for infinite loops.</li>
<ul>
<li>LLVM now builds with GCC 4.3.</li>
-<li>llvm2cpp tool has been folded into llc, use <tt>llc -march=cpp</tt></li>
+<li><tt>llvm2cpp</tt> tool has been folded into llc, use
+ <tt>llc -march=cpp</tt></li>
</ul>
</div>