diff options
author | Chris Lattner <sabre@nondot.org> | 2008-06-08 02:45:07 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2008-06-08 02:45:07 +0000 |
commit | 0eef6e4b957f4385f0789a8f3dbf4702757d094e (patch) | |
tree | f96d874b96e16669f82d31833e79578a521a5cf1 /docs | |
parent | 60727e36d16a55b81fd070fbe6426b23de99aa47 (diff) | |
download | external_llvm-0eef6e4b957f4385f0789a8f3dbf4702757d094e.zip external_llvm-0eef6e4b957f4385f0789a8f3dbf4702757d094e.tar.gz external_llvm-0eef6e4b957f4385f0789a8f3dbf4702757d094e.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')
-rw-r--r-- | docs/ReleaseNotes.html | 124 |
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> |