Substantially hack on and clean up the release notes

llvm-svn: 15416
This commit is contained in:
Chris Lattner 2004-08-02 20:28:44 +00:00
parent 13e1bc338d
commit 7a4000094c

View File

@ -71,15 +71,14 @@ href="http://llvm.cs.uiuc.edu/releases/">releases page</a>.</p>
<p>This is the fourth public release of the LLVM compiler infrastructure. This <p>This is the fourth public release of the LLVM compiler infrastructure. This
release primarily improves the <a href="#codequality">performance of the release primarily improves the <a href="#codequality">performance of the
code</a> produced by all aspects of the LLVM compiler and adds many <a code</a> produced by all aspects of the LLVM compiler, adds many <a
href="#newfeatures">new features</a>, and <a href="#bugfix">fixes a few href="#newfeatures">new features</a>, <a href="#bugfix">fixes a few
bugs</a> as well.</p> bugs</a>, and speeds up the compiler.</p>
<p> At this time, LLVM is known to correctly compile and run all C &amp; C++ <p> At this time, LLVM is known to correctly compile and run all C &amp; C++
SPEC CPU2000 benchmarks, the Olden benchmarks, and the Ptrdist benchmarks. It SPEC CPU95 &amp; 2000 benchmarks, the Olden benchmarks, and the Ptrdist
has also been used to compile <b>many</b> other programs. LLVM now also works benchmarks, and <b>many</b> other programs. LLVM now also works
with a broad variety of C++ programs, though it has still received less testing with a broad variety of C++ programs.</p>
than the C front-end.</p>
</div> </div>
@ -97,8 +96,8 @@ generators, and the interpreter.</li>
<li>Bugpoint can now narrow down code-generation bugs to a loop nest, where <li>Bugpoint can now narrow down code-generation bugs to a loop nest, where
before it could only narrow them down to a function being miscompiled.</li> before it could only narrow them down to a function being miscompiled.</li>
<li><a href="http://llvm.cs.uiuc.edu/PR40">Bugpoint can now debug arbitrary <li><a href="http://llvm.cs.uiuc.edu/PR40">Bugpoint can now debug arbitrary
modes of llc</a> and lli, by passing them command line flags (e.g., modes of llc</a> and lli, by passing them command line flags (e.g.
<tt>-regalloc=linearscan</tt>, <tt>-enable-correct-eh-support</tt>, etc.) </li> <tt>-regalloc=linearscan</tt>).</li>
<li>The Control Flow Graph in the native code generators is no longer <li>The Control Flow Graph in the native code generators is no longer
constrained to be the same as the CFG for the LLVM input code.</li> constrained to be the same as the CFG for the LLVM input code.</li>
<li>The LLVM induction variable analysis routines have been rewritten.</li> <li>The LLVM induction variable analysis routines have been rewritten.</li>
@ -108,8 +107,9 @@ replacement and exit value replacement optimizations.</li>
<li>LLVM now has first-class support for <a <li>LLVM now has first-class support for <a
href="GarbageCollection.html">Accurate Garbage Collection</a>, enabling the use href="GarbageCollection.html">Accurate Garbage Collection</a>, enabling the use
of aggressive copying and generational collectors.</li> of aggressive copying and generational collectors.</li>
<li>LLVM now includes an implementation of Andersen's interprocedural alias <li>LLVM now includes a simple implementation of <a
analysis algorithm.</li> href="AliasAnalysis.html#anders-aa">Andersen's interprocedural alias
analysis</a> algorithm.</li>
<li>Bugpoint can <a href="http://llvm.cs.uiuc.edu/PR327">extract individual <li>Bugpoint can <a href="http://llvm.cs.uiuc.edu/PR327">extract individual
basic blocks</a> to track down reduce miscompilation testcases.</li> basic blocks</a> to track down reduce miscompilation testcases.</li>
<li>LLVM and the C front-end now work under Win32 using the <li>LLVM and the C front-end now work under Win32 using the
@ -117,29 +117,35 @@ basic blocks</a> to track down reduce miscompilation testcases.</li>
This includes the JIT compiler.</li> This includes the JIT compiler.</li>
<li>The LLVM code generator is now being <a <li>The LLVM code generator is now being <a
href="CodeGenerator.html">documented</a>.</li> href="CodeGenerator.html">documented</a>.</li>
<li>There is a new tool, llvm-bcanalyzer. This tool can compute basic <li>LLVM includes a new tool, <a
statistics and bytecode density statistics on a module or function basis and href="CommandGuide/html/llvm-bcanalyzer.html">llvm-bcanalyzer</a>, This tool
also dump out bytecode in a textual format that is lower level than assembly can compute various statistics and dump information about LLVM bytecode
(values are not resolved from slot numbers). It should only be of interest to encoding.</li>
(a) those who are working to improve the bytecode format and (b) those who <li>The <a href="BytecodeFormat.html">LLVM bytecode file format</a> is now
really want to understand or document the details of the bytecode format.</li>
<li>The <a href="BytecodeFormat.html">LLVM Bytecode file format</a> is now
documented.</li> documented.</li>
<li>LLVM now provides an <a <li>LLVM now provides an <a
href="LangRef.html#i_isunordered">llvm.isunordered</a> intrinsic for efficient href="LangRef.html#i_isunordered">llvm.isunordered</a> intrinsic for efficient
implementation of unordered floating point comparisons.</li> implementation of unordered floating point comparisons.</li>
<li>The llvmgcc front-end now supports the GCC builtins for ISO C99 floating <li>The llvmgcc front-end now supports the GCC builtins for ISO C99 floating
point comparison macros (e.g., <tt>__builtin_islessequal</tt>).</li> point comparison macros (e.g., <tt>__builtin_islessequal</tt>).</li>
<li>Now that there are more source files than can fit on a 32Kbyte command <li>We now generate <a href="CommandGuide/">HTML documentation and man pages</a>
line (Linux's limit), there's a new utility for searching the sources. The for the tools from a single source (perl-style POD files).</li>
llvmgrep tool in the utils directory combines an egrep and a find without
passing filenames through the command line. This improves performance
slightly. Simply run llvmgrep like you might egrep but leave off the file
names.</li>
<li>We now generate HTML documentation and man pages for the tools from a single
source (perl-style POD files).</li>
<li>The LLVM code generator can now dynamically load targets from shared <li>The LLVM code generator can now dynamically load targets from shared
objects.</li> objects.</li>
<li>LLVM now includes a "skeleton" target, which makes it easier to get
started porting LLVM to new architectures.</li>
<li>The linear scan register allocator is now enabled by default in the
target-independent code generator.</li>
<li>LLVM now includes a dead store elimination pass.</li>
<li>Bugpoint can now debug miscompilations that lead to the program going
into an infinite loop.</li>
<li>LLVM now provides interfaces to support ML-style pattern matching on the
LLVM IR.</li>
<li>LLVM now includes a <a
href="AliasAnalysis.html#globalsmodref">context-sensitive mod/ref analysis</a>
for global variables, which is now enabled by default in gccld.</li>
<li>LLVM can now autogenerate assembly printers for code generators from the
tablegen description of the target (before they were hand coded).</li>
</ol> </ol>
</div> </div>
@ -161,6 +167,10 @@ non-instruction entities, such as global constant initializer</a></li>
with 64-bit pointers.</a></li> with 64-bit pointers.</a></li>
<li><a href="http://llvm.cs.uiuc.edu/PR290">Bugpoint doesn't support <li><a href="http://llvm.cs.uiuc.edu/PR290">Bugpoint doesn't support
uses of external fns by immediate constant exprs</a></li> uses of external fns by immediate constant exprs</a></li>
<li><a href="http://llvm.cs.uiuc.edu/PR407">Can't add function passes that
depend on immutable passes to the FunctionPassManager</a>.</li>
<li><a href="http://llvm.cs.uiuc.edu/PR308">Archive file reader doesn't
understand abbreviated names in headers</a></li>
</ol> </ol>
</div> </div>
@ -189,6 +199,10 @@ Bytecode Reader</a></li>
<li><a href="http://llvm.cs.uiuc.edu/PR402">Bytecode Enhancements <li><a href="http://llvm.cs.uiuc.edu/PR402">Bytecode Enhancements
Needed</a></li> Needed</a></li>
<li><a href="http://llvm.cs.uiuc.edu/PR404">[loopsimplify] Loop simplify is really slow on 252.eon</a></li> <li><a href="http://llvm.cs.uiuc.edu/PR404">[loopsimplify] Loop simplify is really slow on 252.eon</a></li>
<li><a href="Http://llvm.cs.uiuc.edu/PR122">[code-cleanup] SymbolTable
class cleanup, Type should not derive from Value, eliminate
ConstantPointerRef class</a>.</li>
<li>The memory footprint of the LLVM IR has been reduced substantially.</li>
</ol> </ol>
</div> </div>
@ -231,7 +245,7 @@ hits the inlining threshold.</li>
<li>The -inline pass no longer misses obvious inlining opportunities just <li>The -inline pass no longer misses obvious inlining opportunities just
because the callee eventually calls into an external function.</li> because the callee eventually calls into an external function.</li>
<li>The -simplifycfg pass can now "if convert" simple statements into the new <li>The -simplifycfg pass can now "if convert" simple statements into the
<tt>select</tt> instruction.</li> <tt>select</tt> instruction.</li>
<li>The -loopsimplify pass can now break <a <li>The -loopsimplify pass can now break <a
@ -245,6 +259,9 @@ memory.</li>
<li>The link-time optimizer now runs the -prune-eh pass (to remove unused <li>The link-time optimizer now runs the -prune-eh pass (to remove unused
exception handlers).</li> exception handlers).</li>
<li>The link-time optimizer now runs dead store elimination and uses a simple
interprocedural alias analysis.</li>
<li>The -simplifycfg pass can now eliminate simple correlated branches (such as <li>The -simplifycfg pass can now eliminate simple correlated branches (such as
"<tt>if (A &lt; B &amp;&amp; A &lt; B)</tt>", and can turn short-circuiting "<tt>if (A &lt; B &amp;&amp; A &lt; B)</tt>", and can turn short-circuiting
operators into the strict versions when useful (such as "<tt>if (A &lt; B || A operators into the strict versions when useful (such as "<tt>if (A &lt; B || A
@ -254,16 +271,14 @@ operators into the strict versions when useful (such as "<tt>if (A &lt; B || A
propagation of function calls. It currently supports a few math library propagation of function calls. It currently supports a few math library
functions like sqrt/sin/cos/etc.</li> functions like sqrt/sin/cos/etc.</li>
<li>The C backend now emits <a href="http://llvm.cs.uiuc.edu/PR334">Syntactic <li>The C backend now emits <a href="http://llvm.cs.uiuc.edu/PR334">syntactic
loops</a> in the code to help C compilers whose optimizers do not recognize loops</a> in the code to help C compilers whose optimizers do not recognize
loops formed from gotos (like GCC).</li> loops formed from gotos (like GCC).</li>
<li>Fixed: <a href="http://llvm.cs.uiuc.edu/PR368">[sparcv9] null <li>The SparcV9 backend no longers <a
often spilled to constant pool</a>.</li> href="http://llvm.cs.uiuc.edu/PR368">spills the null constant to the constant
pool</a>.</li>
</ol> </ol>
<li>Fixed: <a href="Http://llvm.cs.uiuc.edu/PR122">[code-cleanup] SymbolTable
class cleanup, Type should not derive from Value, eliminate
ConstantPointerRef class</a>. All three changes have been made.
</div> </div>
<!--=========================================================================--> <!--=========================================================================-->
@ -274,7 +289,7 @@ were fixed:</a>
<div class="doc_text"> <div class="doc_text">
<p>Bugs in the LLVM Core:</p> <p>Bugs fixed in the LLVM Core:</p>
<ol> <ol>
<li><a href="http://llvm.cs.uiuc.edu/PR306">[loopsimplify] Loop simplify <li><a href="http://llvm.cs.uiuc.edu/PR306">[loopsimplify] Loop simplify
@ -283,8 +298,6 @@ incorrectly updates dominator information</a></li>
breaks SSA form</a></li> breaks SSA form</a></li>
<li><a href="http://llvm.cs.uiuc.edu/PR313">[X86] JIT miscompiles unsigned short <li><a href="http://llvm.cs.uiuc.edu/PR313">[X86] JIT miscompiles unsigned short
to floating point cast</a></li> to floating point cast</a></li>
<li><a href="http://llvm.cs.uiuc.edu/PR315">[jit] abort, don't warn, when
missing external functions encountered</a></li>
<li><a href="http://llvm.cs.uiuc.edu/PR330">[vmcore] Linker causes erroneous <li><a href="http://llvm.cs.uiuc.edu/PR330">[vmcore] Linker causes erroneous
asssertion</a></li> asssertion</a></li>
<li><a href="http://llvm.cs.uiuc.edu/PR332">[adce] Crash handling unreachable <li><a href="http://llvm.cs.uiuc.edu/PR332">[adce] Crash handling unreachable
@ -293,13 +306,8 @@ code that unwinds</a></li>
of the same name, both having constant pools</a></li> of the same name, both having constant pools</a></li>
<li><a href="http://llvm.cs.uiuc.edu/PR337">[livevar] Live variables missed <li><a href="http://llvm.cs.uiuc.edu/PR337">[livevar] Live variables missed
physical register use of aliased definition</a></li> physical register use of aliased definition</a></li>
<li><a href="http://llvm.cs.uiuc.edu/PR340">Verifier misses malformed switch
instruction</a></li>
<li><a href="http://llvm.cs.uiuc.edu/PR365">[asmwriter] Asm writer aborts if
an instruction is not embedded into a function</a></li>
<li><a href="http://llvm.cs.uiuc.edu/PR369">[X86] stackifier crash on floating <li><a href="http://llvm.cs.uiuc.edu/PR369">[X86] stackifier crash on floating
point setcc X, X</a></li> point setcc X, X</a></li>
<li><a href="http://llvm.cs.uiuc.edu/PR407">Can't add LICM to FunctionPassManager</a></li>
</ol> </ol>
<p>Bugs in the C/C++ front-end:</p> <p>Bugs in the C/C++ front-end:</p>
@ -354,22 +362,6 @@ are needed by the LLVM build process or test suite (e.g., /bin/time).</p>
</div> </div>
<!--=========================================================================-->
<div class="doc_subsection">
In this release, the following portability problems were fixed:
</div>
<div class="doc_text">
<ol>
<li><a href="http://llvm.cs.uiuc.edu/PR304">warnings compiling Stacker compiler
on Mac OS X</a></li>
<li><a href="http://llvm.cs.uiuc.edu/PR308">Archive file reader doesn't
understand abbreviated names in headers</a></li>
</ol>
</div>
<!-- *********************************************************************** --> <!-- *********************************************************************** -->
<div class="doc_section"> <div class="doc_section">
<a name="knownproblems">Known Problems</a> <a name="knownproblems">Known Problems</a>
@ -635,14 +627,15 @@ Please report any bugs or problems.</p>
<ul> <ul>
<li>The C++ front-end inherits all problems afflicting the <a href="#c-fe">C <li>The C++ front-end inherits all problems afflicting the <a href="#c-fe">C
front-end</a>.</li> front-end</a>.</li>
</ul>
<p><b>IA64 note</b>: The C++ front-end does not use <a <li><b>IA-64 specific</b>: The C++ front-end does not use <a
href="http://llvm.cs.uiuc.edu/PR406">IA64 ABI compliant layout of vtables</a>. href="http://llvm.cs.uiuc.edu/PR406">IA64 ABI compliant layout of v-tables</a>.
In particular, it just stores function pointers instead of function In particular, it just stores function pointers instead of function
descriptors in the vtable. This bug prevents mixing C++ code compiled with descriptors in the vtable. This bug prevents mixing C++ code compiled with
LLVM with C++ objects compiled by other C++ compilers.</p> LLVM with C++ objects compiled by other C++ compilers.</p>
</ul>
</div> </div>
<!-- _______________________________________________________________________ --> <!-- _______________________________________________________________________ -->
@ -688,13 +681,7 @@ href="http://gcc.gnu.org/gcc-3.4/changes.html">GCC 3.4 release notes</a>.</li>
<div class="doc_text"> <div class="doc_text">
<ul> <ul>
<li>Optimized (Release) versions of LLVM built with GCC 3.3.2 or 3.3.3 will <li>none yet</li>
produce an llc tool that always enters an infinite loop due to what
appears to be an optimization bug (-O2 and -O3) in those versions of GCC.
This problem does not happen in GCC 3.3.1 nor GCC 3.4.0 nor does it happen if
you build a Debug version of LLVM. You are cautioned not to use GCC 3.3.2 or
GCC 3.3.3 to build Optimized versions of LLVM. It is unclear whether this problem
affects other backends but it is unlikely.</li>
</ul> </ul>
</div> </div>