[llvm-commits] CVS: llvm/docs/ReleaseNotes.html

Tanya Lattner tonic at nondot.org
Wed May 16 16:26:01 PDT 2007



Changes in directory llvm/docs:

ReleaseNotes.html updated: 1.376 -> 1.377
---
Log message:

Merged in both release announcement guts.


---
Diffs of the changes:  (+242 -13)

 ReleaseNotes.html |  255 +++++++++++++++++++++++++++++++++++++++++++++++++++---
 1 files changed, 242 insertions(+), 13 deletions(-)


Index: llvm/docs/ReleaseNotes.html
diff -u llvm/docs/ReleaseNotes.html:1.376 llvm/docs/ReleaseNotes.html:1.377
--- llvm/docs/ReleaseNotes.html:1.376	Tue May 15 04:21:28 2007
+++ llvm/docs/ReleaseNotes.html	Wed May 16 18:25:46 2007
@@ -96,8 +96,58 @@
 </p>
 
 <ul>
-<li>ding dong llvm-gcc3 is dead</li>
-<li>bytecode -> bitcode</li>
+
+<li>llvm-gcc3 is now officially unsupported.  Users are required to
+    upgrade to llvm-gcc4.  llvm-gcc4 includes many features over
+    llvm-gcc3, is faster, and is much easier to build.</li>
+
+<li>Integer types are now completely signless. This means that we
+    have types like i8/i16/i32 instead of ubyte/sbyte/short/ushort/int
+    etc. LLVM operations that depend on sign have been split up into 
+    separate instructions (<a href="http://llvm.org/PR950">PR950</a>).</li>
+
+<li>Arbitrary bitwidth integers (e.g. i13, i36, i42, etc) are now
+    supported in the LLVM IR and optimizations. However, neither llvm-gcc nor
+    the native code generators support non-standard width integers 
+    (<a href="http://llvm.org/PR1043">PR1043</a>).</li>
+
+<li>'type planes' have been removed (<a href="http://llvm.org/PR411">PR411</a>).
+    It is no longer possible to have two values with the same name in the 
+    same symbol table.  This simplifies LLVM internals, allowing significant 
+    speedups.</li>
+
+<li>Global variables and functions in .ll files are now prefixed with
+    @ instead of % (<a href="http://llvm.org/PR645">PR645</a>).</li>
+
+<li>The LLVM 1.x "bytecode" format has been replaced with a  
+    completely new binary representation, named 'bitcode'.  Because we  
+    plan to maintain binary compatibility between LLVM 2.x ".bc" files,  
+    this is an important change to get right.  Bitcode brings a number of  
+    advantages to the LLVM over the old bytecode format.  It is denser  
+    (files are smaller), more extensible, requires less memory to read,  
+    is easier to keep backwards compatible (so LLVM 2.5 will read 2.0 .bc  
+    files), and has many other nice features.</li>
+
+<li>Support was added for alignment values on load and store
+    instructions (<a href="http://www.llvm.org/PR400">PR400</a>).  This 
+    allows the IR to express loads that are not
+    sufficiently aligned (e.g. due to pragma packed) or to capture extra
+    alignment information. </li>
+
+<li>LLVM now has a new MSIL backend. llc - march=msil will now turn LLVM 
+    into MSIL (".net") bytecode.  This is still fairly early development 
+    with a number of limitations.</li>
+
+<li>Support has been added for 'protected visibility' in ELF.</li>
+
+<li>Thread Local Storage with the __thread keyword was implemented along 
+    with added codegen support for Linux on X86 and ARM.</li>
+
+<li>ELF symbol aliases supported has been added.</li>
+
+<li>Added support for 'polymorphic intrinsics', allowing things like 
+    llvm.ctpop to work on arbitrary width integers.</li>
+
 </ul>
   
 </div>
@@ -111,8 +161,30 @@
 </p>
 
 <ul>
-<li>many new supported things</li>
-<li>easier to configure on linux</li>
+<li>Precompiled Headers (PCH) support has been implemented.</li>
+
+<li>Support for external weak linkage and hidden visibility has been added.</li>
+
+<li>Packed structure types are now supported , which allows LLVM to express 
+    unaligned data more naturally.</li>
+
+<li>Inline assembly support has been improved and many bugs were fixed.
+    The two large missing features are support for 80-bit floating point stack 
+    registers on X86 (<a href="http://llvm.org/PR879">PR879</a>), and support for inline asm in the C backend (<a href="http://llvm.org/PR802">PR802</a>).</li>
+
+<li>Ada support, such as nested functions, has been improved.</li>
+
+<li>Tracking function parameter/result attributes is now possible.</li>
+
+<li>Its is now easier to configure llvm-gcc for linux.</li>
+
+<li>Many enhancements have been added, such as improvements to NON_LVALUE_EXPR,
+    arrays with non-zero base, structs with variable sized fields,  
+    VIEW_CONVERT_EXPR, CEIL_DIV_EXPR, and many other things.</li>
+
+<li>Improved "attribute packed" support in the CFE, and handle many
+    other obscure struct layout cases correctly.</li>
+
 </ul>
   
 </div>
@@ -125,7 +197,29 @@
 </p>
 
 <ul>
-<li></li>
+<li>The pass manager has been entirely rewritten, making it significantly 
+    smaller, simpler, and more extensible. Support has been added to run 
+    FunctionPasses interlaced with CallGraphSCCPasses.</li>
+
+<li>The -scalarrepl pass can now promote unions containing FP values into
+    a register, it can also handle unions of vectors of the same size.</li>
+
+<li>The predicate simplifier pass has been improved, making it able to do 
+    simple value range propagation and eliminate more conditionals.</li>
+
+<li>There is a new new LoopPass class. The passmanager has been
+    modified to support it, and all existing loop xforms have been
+    converted to use it. </li>
+
+<li>There is a new loop rotation pass, which converts "for loops" into 
+    "do/while loops", where the condition is at the bottom of the loop.</li>
+
+<li>ModulePasses may now use the result of FunctionPasses.</li>
+
+<li>The [Post]DominatorSet classes have been removed from LLVM and clients switched to use the far-more-efficient ETForest class instead.  </li>
+
+<li>The ImmediateDominator class has also been removed, and clients have been switched to use DominatorTree instead.</li>
+
 </ul>
   
 </div>
@@ -140,14 +234,64 @@
 </p>
 
 <ul>
-<li></li>
+<li>Support for Zero-cost DWARF exception handling has been added. It is mostly
+    complete and just in need of continued bug fixes and optimizations at 
+    this point.</li>
+
+<li>Progress has been made on a direct Mach-o .o file writer. Many small 
+    apps work, but it is not quite complete yet.</li>
+
+<li>Support was added for software floating point routines.</li>
+
+<li>DWARF debug information generation has been improved.  LLVM now passes 
+    most of the GDB testsuite on MacOS and debug info is more dense.</li>
+
+<li>A new register scavenger has been implemented, which is useful for
+    finding free registers after register allocation.  This is useful when
+    rewriting frame references on RISC targets, for example.</li>
+
+<li>Heuristics have been added to avoid coalescing vregs with very large live 
+    ranges to physregs.</li>
+
+<li>Support now exists for very simple (but still very useful) 
+    rematerialization the register allocator, enough to move  
+    instructions like "load immediate" and constant pool loads.</li>
+
+<li>Significantly improved 'switch' lowering, improving codegen for 
+    sparse switches that have dense subregions, and implemented support 
+    for the shift/and trick.</li>
+
+<li>The code generator now has more accurate and general hooks for  
+    describing addressing modes ("isLegalAddressingMode") to  
+    optimizations like loop strength reduction and code sinking.</li>
+
+<li>The Loop Strength Reduction pass has been improved, and support added 
+    for sinking expressions across blocks to reduce register pressure.</li>
+
+<li>Added support for tracking physreg sub-registers and super-registers 
+    in the code generator, as well as extensive register  
+    allocator changes to track them.</li>
+
+<li>There is initial support for virtreg sub-registers 
+    (<a href="http://llvm.org/PR1350">PR1350</a>).</li>
+
 </ul>
 
 <p>In addition, the LLVM target description format has itself been extended in
  several ways:</p>
  
 <ul>
-<li></li>
+<li>Extended TargetData to support better target parameterization in
+    the .ll/.bc files, eliminating the 'pointersize/endianness' attributes
+    in the files (<a href="http://llvm.org/PR761">PR761</a>).</li>
+
+<li>TargetData was generalized for finer grained alignment handling,
+    handling of vector alignment, and handling of preferred alignment</li>
+
+<li>LLVM now supports describing target calling conventions  
+    explicitly in .td files, reducing the amount of C++ code that needs  
+    to be written for a port.</li>
+
 </ul>
 
 <p>Further, several significant target-specific enhancements are included in
@@ -165,25 +309,110 @@
 
 <div class="doc_text">
 
-<p>New features include:
+<p>X86-Specific Code Generator Enhancements:
 </p>
 
 <ul>
-<li></li>
+<li>The scheduler was improved to better reduce register pressure on  
+    X86 and other targets that are register pressure sensitive</li>
+<li>Linux/x86-64 support has been improved.</li>
+<li>PIC support for linux/x86 has been added.</li>
+<li>Support now exists for the GCC regparm attribute, and code in the X86 
+    backend to respect it.</li>
+<li>Various improvements have been made for the X86-64 JIT, allowing it to
+    generate code in the large code model</li>
+<li>LLVM now supports inline asm with multiple constraint letters per operand 
+    (like "ri") which is common in X86 inline asms.</li>
+<li>Early support has been added for X86 inline asm in the C backend.</li>
+<li>Added support for the X86 MMX instruction set.</li>
+
 </ul>
-  
+
+<p>ARM-Specific Code Generator Enhancements:
+</p>
+
+<ul>
+<li>Several improvements have been made to the ARM backend, including basic 
+    inline asm support, weak linkage support, static ctor/dtor support and 
+    many bug fixes.</li>
+<li>There are major enhancements to the ARM backend, including support for ARM 
+    v4-v6, vfp support, soft float, pre/postinc support, load/store multiple 
+    generation, constant pool entry motion (to support large functions),
+    and enhancements to ARM constant island pass.
+    </li>
+<li>Added support for Thumb code generation (an ARM subtarget).</li>
+<li>More aggressive size analysis for ARM inline asm strings was 
+    implemented.</li>
+</ul>
+
+</div>
+
+<p>Other Target-Specific Code Generator Enhancements:
+</p>
+
+<ul>
+<li>The PowerPC 64 JIT now supports addressing code loaded above the 2G
+     boundary.</li>
+
+<li>Improved support for the Linux/ppc ABI and the linux/ppc JIT is fully 
+    functional now.  llvm-gcc and static compilation are not fully supported 
+    yet though.<</li>
+
+<li>Many bugs fixed for PowerPC 64.</li>
+
+<li>Support was added for the ARM AAPCS and EABI ABIs and PIC codegen on 
+    arm/linux.</li>
+
+<li>Several bugs in DWARF debug emission on linux and cygwin/mingw were fixed.
+    Debugging basically works on these targets now.</li>
+
+<li>Support has been added for the X86-64 large code model to the JIT,  
+    which is useful if JIT'd function bodies are more than 2G away from  
+    library functions.</li>
+
+<li>Several bugs were fixed for DWARF debug info generation on arm/linux.</li>
+
+</ul>
+
 </div>
 
 
 <!--_________________________________________________________________________-->
 <div class="doc_subsubsection"><a name="other">Other Improvements</a></div>
 <div class="doc_text">
-<p></p>
+
+<p>This release includes many other improvements, including
+performance work, specifically designed to tune datastructure
+usage. This makes several critical components faster.</p>
 
 <p>More specific changes include:</p>
 
 <ul>
-<li></li>
+<li>ConstantBool, ConstantIntegral and ConstantInt classes have been merged 
+    together, we now just have ConstantInt</li>
+
+<li>LLVM no longer relies on static destructors to shut itself down.  Instead,
+    it lazily initializes itself and shuts down when llvm_shutdown() is 
+    explicitly called.</li>
+
+<li>LLVM now has significantly fewer static constructors, reducing startup time.
+    </li>
+
+<li>Several classes have been refactored to reduce the amount of code that
+    gets linked into apps that use the JIT.</li>
+
+<li>Construction of intrinsic function declarations has been simplified.</li>
+
+<li>The llvm-upgrade tool now exists. This migrates LLVM 1.9 .ll files to 
+    LLVM 2.0 syntax.</li>
+
+<li>The gccas/gccld tools have been removed.</li>
+
+<li>Support has been added to llvm-test for running on low-memory  
+    or slow machines (make SMALL_PROBLEM_SIZE=1).</li>
+
+<li>llvm-test is now more portable and should build with MS Visual Studio.</li>
+
 </ul>
 </div>
 
@@ -610,7 +839,7 @@
   src="http://www.w3.org/Icons/valid-html401" alt="Valid HTML 4.01!" /></a>
 
   <a href="http://llvm.org/">The LLVM Compiler Infrastructure</a><br>
-  Last modified: $Date: 2007/05/15 09:21:28 $
+  Last modified: $Date: 2007/05/16 23:25:46 $
 </address>
 
 </body>






More information about the llvm-commits mailing list