forked from OSchip/llvm-project
Commit the cleanup of the LLVM 1.4 release notes. This should clearly go
into the release :) llvm-svn: 18599
This commit is contained in:
parent
b95f8ab3ef
commit
b5bb597405
|
@ -44,14 +44,14 @@
|
|||
|
||||
<p>This document contains the release notes for the LLVM compiler
|
||||
infrastructure, release 1.4. Here we describe the status of LLVM, including any
|
||||
known problems and bug fixes from the previous release. The most up-to-date
|
||||
known problems and improvements from the previous release. The most up-to-date
|
||||
version of this document can be found on the <a
|
||||
href="http://llvm.cs.uiuc.edu/releases/1.4/">LLVM 1.4 web site</a>. If you are
|
||||
not reading this on the LLVM web pages, you should probably go there because
|
||||
this document may be updated after the release.</p>
|
||||
|
||||
<p>For more information about LLVM, including information about potentially more
|
||||
current releases, please check out the <a href="http://llvm.cs.uiuc.edu">main
|
||||
<p>For more information about LLVM, including information about the latest
|
||||
release, please check out the <a href="http://llvm.cs.uiuc.edu">main LLVM
|
||||
web site</a>. If you have questions or comments, the <a
|
||||
href="http://mail.cs.uiuc.edu/mailman/listinfo/llvmdev">LLVM developer's mailing
|
||||
list</a> is a good place to send them.</p>
|
||||
|
@ -73,9 +73,18 @@ href="http://llvm.cs.uiuc.edu/releases/">releases page</a>.</p>
|
|||
|
||||
<p>This is the fifth public release of the LLVM compiler infrastructure.</p>
|
||||
|
||||
<p> At this time, LLVM is known to correctly compile and run all C & C++
|
||||
SPEC CPU95 & 2000 benchmarks, the Olden benchmarks, and the Ptrdist
|
||||
benchmarks, and <b>many</b> other C and C++ programs.</p>
|
||||
<p> At this time, LLVM is known to correctly compile and a broad range of
|
||||
C and C++ programs, including the SPEC CPU95 & 2000 suite. This release
|
||||
includes several major enhancements to the LLVM system, including a new
|
||||
PowerPC JIT, enhancements to the C/C++ front-end to provide source line number
|
||||
information in LLVM, a new <a href="CommandGuide/html/llvmc.html">compiler
|
||||
driver</a>, and several other enhancements listed below. It also includes
|
||||
bug fixes for those problems found since the 1.3 release.</p>
|
||||
|
||||
<p>Note that this release seperates the LLVM Program Testsuite out of the
|
||||
main LLVM distribution into a seperate CVS repository and tarball. This
|
||||
reduces the size of the main LLVM distribution. Also note that LLVM now
|
||||
builds tools into llvm/Debug/bin by default instead of llvm/tools/Debug.</p>
|
||||
|
||||
</div>
|
||||
|
||||
|
@ -86,71 +95,69 @@ benchmarks, and <b>many</b> other C and C++ programs.</p>
|
|||
|
||||
<div class="doc_text">
|
||||
<ol>
|
||||
<li>LLVM now includes a JIT for the PowerPC target.</li>
|
||||
<li>LLVM now optimizes global variables significantly more than it did
|
||||
before.
|
||||
<li>LLVM now includes a Just-In-Time compiler for the PowerPC target.</li>
|
||||
<li>llvmgcc and llvmg++ now emit source line number information when '-g' is
|
||||
passed in. This information can be used with llvm-db or other tools and
|
||||
passes.</li>
|
||||
<li>The test/Programs hierarchy <a href="http://llvm.cs.uiuc.edu/PR257">has
|
||||
been moved out of the main LLVM tree</a> into a separate CVS repository and
|
||||
tarball. This shrinks the distribution size of LLVM itself significantly.
|
||||
</li>
|
||||
<li>LLVM now optimizes global variables more aggressively than it did
|
||||
before.</li>
|
||||
<li>LLVM now includes the new '<tt>undef</tt>' value and
|
||||
<a href="LangRef.html#i_unreachable"><tt>unreachable</tt></a> instruction,
|
||||
which give the optimizer more information about the behavior of the
|
||||
program.
|
||||
</li>
|
||||
<li>llvmgcc and llvmg++ now emit source line number information when '-g' is
|
||||
passed in. This information can be used with llvm-db or other tools and
|
||||
passes.
|
||||
</li>
|
||||
<li>The test/Programs hierarchy <a href="http://llvm.cs.uiuc.edu/PR257">has
|
||||
been moved out of the main LLVM tree</a> into a separate CVS repository and
|
||||
tarball. This shrinks the distribution size of LLVM itself significantly.
|
||||
</li>
|
||||
<li>Bytecode compression with bzip2 has been implemented. All bytecode files
|
||||
generated by LLVM will now be compressed by default. Compression can be
|
||||
disabled with the <tt>-disable-compression</tt> option to the tools that can
|
||||
generate bytecode files.
|
||||
</li>
|
||||
<li>A generic <a href="http://llvm.cs.uiuc.edu/PR353">compiler driver</a> and
|
||||
an associated <a href="CommandGuide/html/llvm-ld.html">generic linker</a> have
|
||||
been implemented. The compiler driver is generic because it can be configured
|
||||
<li>A generic <a href="CommandGuide/html/llvmc.html">compiler driver</a>
|
||||
(llvmc) and
|
||||
an associated <a href="CommandGuide/html/llvm-ld.html">generic linker</a>
|
||||
(llvm-ld) have been added. The compiler driver is generic because it can be
|
||||
configured
|
||||
to pre-process, translate, optimize, assemble, and link code from any source
|
||||
language. This aids compiler writers because all that is needed is a
|
||||
source-to-bytecode or source-to-assembly translator and a configuration file.
|
||||
The linker is generic because it allows dynamically loadable optimization
|
||||
modules to be executed for link-time optimization. Language specific
|
||||
link-time optimization modules can be created and executed automatically.
|
||||
language with an LLVM front-end. This makes it easier for compiler writers
|
||||
to hide the multiple steps required to compile a program (compiling,
|
||||
optimizing, linking runtime libraries, etc) in one simple command.
|
||||
</li>
|
||||
<li>The <a href="http://llvm.cs.uiuc.edu/PR263">dependent libraries</a>
|
||||
feature has been implemented. This allows front end compilers to indicate in
|
||||
the bytecode which libraries the bytecode needs to be linked with. Both the
|
||||
C/C++ front end and Stacker support generating the required libraries. The
|
||||
Linker now supports using this information to ensure required libaries are
|
||||
linker now supports using this information to ensure required libaries are
|
||||
linked into the module. This minimizes the need to use the <tt>-l</tt> option
|
||||
when using <a href="CommandGuide/html/llvmc.html"><tt>llvmc</tt></a>
|
||||
</li>
|
||||
<li>The LLVM makefiles have been improved to build LLVM faster (2x) and
|
||||
includes new targets (like dist-check, uninstall). One important change is
|
||||
associated with <a href="http://llvm.cs.uiuc.edu/PR456">PR456</a>. The
|
||||
libraries and tools will now be built into <tt>$builddir/Debug/{bin,lib}</tt>
|
||||
instead of <tt>$builddir/tools/Debug</tt> and <tt>$builddir/lib/Debug</tt>.
|
||||
Similarly for <tt>Release</tt> and <tt>Profile</tt> builds.
|
||||
<li>The LLVM makefiles have been improved to build LLVM much faster and
|
||||
includes new targets (like dist-check, uninstall). One important user-visible
|
||||
change is that libraries and tools will now be built into
|
||||
<tt>$builddir/Debug/{bin,lib}</tt>
|
||||
instead of <tt>$builddir/tools/Debug</tt> and <tt>$builddir/lib/Debug</tt>
|
||||
(Similarly for <tt>Release</tt> and <tt>Profile</tt> builds).
|
||||
</li>
|
||||
<li>The LLVM source code is much more compatible with Microsoft Visual C++,
|
||||
including the JIT and runtime-code generation, though the entire system
|
||||
may not work with it.
|
||||
</li>
|
||||
<li>The target-to-JIT interfaces <a href="http://llvm.cs.uiuc.edu/PR283">are
|
||||
<li>The JIT-Target interfaces <a href="http://llvm.cs.uiuc.edu/PR283">are
|
||||
now much simpler</a> and more powerful.
|
||||
</li>
|
||||
<li>LLVM now provides llvm-ar and llvm-ranlib tools for working with archives
|
||||
of LLVM bytecode files.</li>
|
||||
<li>zlib and libpng are <a href="http://llvm.cs.uiuc.edu/PR417">no longer
|
||||
included in the main LLVM tarball</a>.</li>
|
||||
<li>The LLVM code generator now generates asm writers for the target from
|
||||
an abstract target description, instead of requiring them to be hand
|
||||
written.</li>
|
||||
<li>The LLVM code generator now automatically generates assembly code writers
|
||||
from an abstract target descriptions, eliminating the need to write
|
||||
assembly printers manually.</li>
|
||||
<li>LLVM regression and feature tests can now be run with DejaGNU.</li>
|
||||
<li>llvmgcc and llvmg++ now emit source-level line number information, making
|
||||
it possible to map from LLVM code back to source. This is currently used
|
||||
by llvm-db.</li>
|
||||
<li>Floating point intensive programs on X86 systems run much faster
|
||||
with the LLC code generator and JIT than in 1.3.</li>
|
||||
</ol>
|
||||
|
||||
</div>
|
||||
|
@ -187,14 +194,12 @@ issues were fixed:</a>
|
|||
<div class="doc_text">
|
||||
|
||||
<ol>
|
||||
<li><a href="http://llvm.cs.uiuc.edu/PR409">
|
||||
[core/asmparser] ConstantFP::isValueValidForType Broken</a>
|
||||
<li>The linker no longer <a href="http://llvm.cs.uiuc.edu/PR426">emits many
|
||||
useless warnings</a> when linking C++ programs.</a>
|
||||
</li>
|
||||
<li><a href="http://llvm.cs.uiuc.edu/PR426">[llvmg++] Tons of warnings
|
||||
are spewed when linking to libstdc++</a>
|
||||
</li>
|
||||
<li><a href="http://llvm.cs.uiuc.edu/PR352">include/{Support,Config} ->
|
||||
include/llvm/{Support,Config}</a>
|
||||
<li>The LLVM <a href="http://llvm.cs.uiuc.edu/PR352">#include namespace</a>
|
||||
has been made consistent. Files in <tt>llvm/include/{Support,Config}</tt>
|
||||
are now located in <tt>llvm/include/llvm/{Support,Config}</tt>.</a>
|
||||
</li>
|
||||
<li>The names of the libraries generated by compiling LLVM source have been
|
||||
changed to ensure they do not conflict with other packages upon installation.
|
||||
|
@ -202,23 +207,13 @@ issues were fixed:</a>
|
|||
the library <tt>libasmparser.a</tt> in 1.3 has become
|
||||
<tt>libLLVMAsmParser.a</tt> in release 1.4.
|
||||
</li>
|
||||
<li><a href="http://llvm.cs.uiuc.edu/PR459">[llvmg++] C++ frontend is expanding
|
||||
lots of unused inline functions</a></li>
|
||||
</ol>
|
||||
<li>The C++ frontend no longer expands and emits <a
|
||||
href="http://llvm.cs.uiuc.edu/PR459">all inline functions, even if they
|
||||
are unused</a>. It now properly tracks which functions are needed and
|
||||
only compiles those.</li>
|
||||
|
||||
</div>
|
||||
|
||||
<!--=========================================================================-->
|
||||
<div class="doc_subsubsection">
|
||||
In this release, the following build problems were fixed:
|
||||
</div>
|
||||
|
||||
<div class="doc_text">
|
||||
<ol>
|
||||
<li><a href="http://llvm.cs.uiuc.edu/PR256">[autoconf] further standardizing
|
||||
autoconf usage</a>. Various improvements in the configure.ac script were
|
||||
made as well as the makefile system.
|
||||
</li>
|
||||
<li>Many improvements in the <a href="http://llvm.cs.uiuc.edu/PR256">autoconf
|
||||
and makefile systems</a> have been implemented.</li>
|
||||
</ol>
|
||||
</div>
|
||||
|
||||
|
@ -230,9 +225,12 @@ improvements:</a>
|
|||
|
||||
<div class="doc_text">
|
||||
<ol>
|
||||
<li><a href="http://llvm.cs.uiuc.edu/PR362">Ugly code generated for
|
||||
std::min/std::max</a>
|
||||
</li>
|
||||
<li>The optimizer produces <a href="http://llvm.cs.uiuc.edu/PR362">more
|
||||
efficient code for std::min/std::max</a> and other similar functions.</li>
|
||||
<li>The X86 backend generates substantially faster code for floating point
|
||||
intensive programs.</li>
|
||||
<li>The PowerPC backend generates more efficient code in many common
|
||||
scenarios.</li>
|
||||
</ol>
|
||||
</div>
|
||||
|
||||
|
@ -247,10 +245,6 @@ were fixed:</a>
|
|||
<p>Bugs fixed in the LLVM Core:</p>
|
||||
|
||||
<ol>
|
||||
<li><a href="http://llvm.cs.uiuc.edu/PR139">[Linker] gccld does not link
|
||||
objects/archives in order specified on the command line</a></li>
|
||||
<li><a href="http://llvm.cs.uiuc.edu/PR227">[X86] llc output for functions
|
||||
w/certain names tickles GNU 'as' bugs</a></li>
|
||||
<li><a href="http://llvm.cs.uiuc.edu/PR420">[licm] LICM invalidates alias
|
||||
analysis info and uses broken information</a> (optimizer crash)</li>
|
||||
<li><a href="http://llvm.cs.uiuc.edu/PR422">[asmwriter] Asmwriter is really
|
||||
|
@ -259,6 +253,8 @@ were fixed:</a>
|
|||
completely broken in LLVM 1.3</a></li>
|
||||
<li><a href="http://llvm.cs.uiuc.edu/PR430">[bcwriter] Empty compaction
|
||||
tables defined</a></li>
|
||||
<li><a href="http://llvm.cs.uiuc.edu/PR227">[X86] llc output for functions
|
||||
w/certain names tickles GNU 'as' bugs</a></li>
|
||||
<li><a href="http://llvm.cs.uiuc.edu/PR472">[cbackend] Static globals are
|
||||
prototyped as 'extern'</a></li>
|
||||
</ol>
|
||||
|
@ -274,7 +270,7 @@ were fixed:</a>
|
|||
bitfield which does not increase struct size</a></li>
|
||||
<li><a href="http://llvm.cs.uiuc.edu/PR424">[llvmgcc] llvmgcc emits invalid
|
||||
constant exprs</a></li>
|
||||
<li><a href="http://llvm.cs.uiuc.edu/PR421">[llvmg++] Crash in initializing
|
||||
<li><a href="http://llvm.cs.uiuc.edu/PR421">[llvmg++] Crash initializing
|
||||
array with constructors in hard EH situations</a></li>
|
||||
<li><a href="http://llvm.cs.uiuc.edu/PR397">[llvm-gcc] Inline function
|
||||
redefinitions error due to 'asm' function rename</a></li>
|
||||
|
@ -309,8 +305,9 @@ were fixed:</a>
|
|||
<li>Intel and AMD machines running Red Hat Linux and FreeBSD (and probably
|
||||
other unix-like systems).</li>
|
||||
<li>Sun UltraSPARC workstations running Solaris 8.</li>
|
||||
<li>Intel and AMD machines running on Win32 with the Cygwin libraries.</li>
|
||||
<li>PowerPC-based Mac OS X boxes, running 10.2 and above.</li>
|
||||
<li>Intel and AMD machines running on Win32 with the Cygwin libraries (limited
|
||||
support is available for native builds with Visual C++).</li>
|
||||
<li>PowerPC-based Mac OS X systems, running 10.2 and above.</li>
|
||||
</ul>
|
||||
|
||||
<p>The core LLVM infrastructure uses
|
||||
|
@ -319,6 +316,7 @@ to the machine and operating system on which it is built. However, minor
|
|||
porting may be required to get LLVM to work on new platforms. We welcome your
|
||||
portability patches and reports of successful builds or error messages.</p>
|
||||
|
||||
<!--
|
||||
<p>Note that the LLVM build system does not currently support directories with
|
||||
spaces on them when running on Win32/cygwin. We strongly recommend running
|
||||
LLVM and the C frontend out of a top-level directory without spaces (e.g.,
|
||||
|
@ -327,6 +325,7 @@ cygwin packages. By default, many important tools are not installed that
|
|||
are needed by the LLVM build process or test suite (e.g., /bin/time). Finally,
|
||||
please make sure that there are no directories with spaces in them in your
|
||||
PATH environment variable.</p>
|
||||
-->
|
||||
|
||||
</div>
|
||||
|
||||
|
@ -360,11 +359,11 @@ useful to some people. In particular, if you would like to work on one of these
|
|||
components, please contact us on the llvmdev list.</p>
|
||||
|
||||
<ul>
|
||||
<li>The following passes are incomplete or buggy: <tt>-pgmdep, -memdep,
|
||||
-ipmodref, -cee, -branch-combine, -instloops, -paths</tt></li>
|
||||
<li>The <tt>-pre</tt> pass is incomplete (there are cases it doesn't handle that
|
||||
it should) and not thoroughly tested.</li>
|
||||
<li>The <tt>llvm-db</tt> tool is in a very early stage of development.</li>
|
||||
<li>The following passes are incomplete or buggy, and may be removed in future
|
||||
releases: <tt>-pgmdep, -memdep, -ipmodref, -cee, -branch-combine,
|
||||
-instloops, -paths, -pre</tt></li>
|
||||
<li>The <tt>llvm-db</tt> tool is in a very early stage of development, but can
|
||||
be used to step through programs and inspect the stack.</li>
|
||||
<li>The "iterative scan" register allocator (enabled with -regalloc=iterativescan)
|
||||
is not stable.</li>
|
||||
</ul>
|
||||
|
@ -385,22 +384,10 @@ components, please contact us on the llvmdev list.</p>
|
|||
such, execution of a threaded program could cause these data structures to be
|
||||
corrupted.
|
||||
</li>
|
||||
<li>Linking in static archive files (.a files) is slow by default because
|
||||
there is no symbol table in the archive. To remedy this, run
|
||||
<a href="CommandGuide/html/llvm-ranlib.html"><tt>llvm-ranlib</tt></a> on the
|
||||
archive to add an LLVM symbol table.
|
||||
</li>
|
||||
<li>The gccld program <a href="http://llvm.cs.uiuc.edu/PR139">does not link
|
||||
objects/archives in the order specified on the command line.</a>
|
||||
</li>
|
||||
<li><a href="http://llvm.cs.uiuc.edu/PR240">The lower-invoke pass does not
|
||||
mark values live across a setjmp as volatile</a>. This missing feature
|
||||
only affects targets whose setjmp/longjmp libraries do not save and restore
|
||||
the entire register file.</li>
|
||||
<li><a href="http://llvm.cs.uiuc.edu/PR427">[bytecode] Assertion on V1
|
||||
Bytecode Files</a>. This bug won't be fixed because V1 bytecode had its own
|
||||
problems, no one is using V1 bytecode any more, and the fix is non-trivial.
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
|
@ -426,9 +413,6 @@ components, please contact us on the llvmdev list.</p>
|
|||
<li>Initialization of global union variables can only be done <a
|
||||
href="http://llvm.cs.uiuc.edu/PR162">with the largest union member</a>.</li>
|
||||
|
||||
<li><a href="http://llvm.cs.uiuc.edu/PR244">[llvm-gcc] Error when an implicitly
|
||||
external function is re-declared as static</a></li>
|
||||
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
|
@ -581,10 +565,9 @@ lists, please let us know (also including whether or not they work).</p>
|
|||
|
||||
<div class="doc_text">
|
||||
|
||||
<p>For this release, the C++ front-end is considered to be fully functional but
|
||||
has not been tested as thoroughly as the C front-end. It has been tested and
|
||||
works for a number of non-trivial programs, but there may be lurking bugs.
|
||||
Please report any bugs or problems.</p>
|
||||
<p>For this release, the C++ front-end is considered to be fully. It has been
|
||||
tested and works for a number of non-trivial programs, including LLVM
|
||||
itself.</p>
|
||||
|
||||
</div>
|
||||
|
||||
|
@ -696,10 +679,6 @@ Analysis rules. As such, special options may be necessary to compile the code
|
|||
(for example, GCC requires the <tt>-fno-strict-aliasing</tt> option). This
|
||||
problem probably cannot be fixed.</li>
|
||||
|
||||
<li><a href="http://llvm.cs.uiuc.edu/PR33">Initializers for global variables</a>
|
||||
cannot include special floating point numbers like Not-A-Number or
|
||||
Infinity.</li>
|
||||
|
||||
<li><a href="http://llvm.cs.uiuc.edu/PR56">Zero arg vararg functions are not
|
||||
supported</a>. This should not affect LLVM produced by the C or C++
|
||||
frontends.</li>
|
||||
|
|
Loading…
Reference in New Issue