"http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<link rel="stylesheet" href="llvm.css" type="text/css">
<title>LLVM 1.4 Release Notes</title>
</head>
<li><a href="#c++-fe">Known problems with the C++ Front-end</a>
<li><a href="#x86-be">Known problems with the X86 Back-end</a>
<li><a href="#sparcv9-be">Known problems with the SparcV9 Back-end</a>
+ <li><a href="#ppc-be">Known problems with the PowerPC Back-end</a>
<li><a href="#c-be">Known problems with the C back-end</a>
</ul></li>
<li><a href="#additionalinfo">Additional Information</a></li>
<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 programs. LLVM now also works
-with a broad variety of C++ programs.</p>
+benchmarks, and <b>many</b> other C and C++ programs.</p>
</div>
</div>
<div class="doc_text">
-
<ol>
-<li></li>
+ <li>LLVM now includes a JIT for the PowerPC target.</li>
+ <li>LLVM now optimizes global variables significantly more 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
+ 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.
+ </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
+ 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>
+ <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
+ now much simpler</a> and more powerful.
+ </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>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>
<div class="doc_text">
<ol>
-<li><a href="http://llvm.org/PR419">JIT interface should support arbitrary
- calls</a></li>
+ <li><a href="http://llvm.cs.uiuc.edu/PR419">JIT interface should support
+ arbitrary calls</a>
+ </li>
+ <li>The <tt>llvm-ar</tt> tool was previously incomplete and didn't properly
+ support other ar(1) implementations. This has been corrected. <tt>llvm-ar</tt>
+ now fully supports all archive editing functions, table of contents listing,
+ extraction, and printing. It can also read BSD4.4/MacOSX and SVR4 style
+ archives. See <a href="CommandGuide/html/llvm-ar.html">llvm-ar</a> for
+ details.
+ </li>
</ol>
</div>
<div class="doc_text">
<ol>
-<li><a href="http://llvm.org/PR426">[llvmg++] Tons of warnings are spewed when
- linking to libstdc++</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>
+ <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.
+ Each LLVM library is now prefixed with LLVM and uses mixed clase. For example,
+ 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>
</div>
<div class="doc_text">
<ol>
-<li></li>
+ <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>
</ol>
</div>
<div class="doc_text">
<ol>
- <li><a href="http://llvm.org/PR257">move test/Programs out of the main llvm
- tree</a></li>
- <li><a href="http://llvm.org/PR352">include/{Support,Config} ->
- include/llvm/{Support,Config}</a></li>
+ <li><a href="http://llvm.cs.uiuc.edu/PR362">Ugly code generated for
+ std::min/std::max</a>
+ </li>
</ol>
</div>
<p>Bugs fixed in the LLVM Core:</p>
<ol>
-<li><a href="http://llvm.org/PR422">[asmwriter] Asmwriter is really slow for
- functions with lots of values</a></li>
-<li><a href="http://llvm.org/PR423">[anders-aa] Andersen's AA is completely
- broken in LLVM 1.3</a></li>
-<li><a href="http://llvm.org/PR430">[bcwriter] Empty compaction tables
- defined</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
+ slow for functions with lots of values</a></li>
+ <li><a href="http://llvm.cs.uiuc.edu/PR423">[anders-aa] Andersen's AA is
+ 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>
<p>Bugs in the C/C++ front-end:</p>
<ol>
-<li></li>
+ <li><a href="http://llvm.cs.uiuc.edu/PR445">[llvmg++] not enough templates are
+ instantiated</a></li>
+ <li><a href="http://llvm.cs.uiuc.edu/PR450">[llvmg++] Extern const globals
+ cannot be marked 'constant' if they have nontrivial ctors or dtors</a></li>
+ <li><a href="http://llvm.cs.uiuc.edu/PR461">[llvmgcc] Crash compiling unnamed
+ 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
+ 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>
+ <li><a href="http://llvm.cs.uiuc.edu/PR244">[llvm-gcc] Error when an
+ implicitly external function is re-declared as static</a></li>
+ <li><a href="http://llvm.cs.uiuc.edu/PR360">[llvmgcc] Structure field with
+ non-constant offset crashes llvmgcc</a></li>
+ <li><a href="http://llvm.cs.uiuc.edu/PR447">[llvmg++] Crash compiling
+ friend with default argument</a></li>
</ol>
<p>Bugs fixed in the Sparc V9 back-end:</p>
<ol>
-<li><a href="http://llvm.org/PR428">[sparcv9] regalloc assertion
+ <li><a href="http://llvm.cs.uiuc.edu/PR428">[sparcv9] regalloc assertion
failure with certain indirect calls</a></li>
</ol>
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. Note that no JIT
-support is available yet, and LLC support is beta. The C backend can be used
-to produce stable code for this platform.</li>
+<li>PowerPC-based Mac OS X boxes, running 10.2 and above.</li>
</ul>
<p>The core LLVM infrastructure uses
components, please contact us on the llvmdev list.</p>
<ul>
-<li>The PowerPC backend is incomplete and is known to miscompile several SPEC
-benchmarks. The file <tt>llvm/lib/Target/PowerPC/README.txt</tt> has
-details.</li>
<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-ar</tt> tool is incomplete and probably buggy.</li>
<li>The <tt>llvm-db</tt> tool is in a very early stage of development.</li>
+<li>The "iterative scan" register allocator (enabled with -regalloc=iterativescan)
+ is not stable.</li>
</ul>
</div>
<div class="doc_text">
<ul>
-
-<li>In the JIT, <tt>dlsym</tt> on a symbol compiled by the JIT will not
-work.</li>
-
-<li>The JIT does not use mutexes to protect its internal data structures. As
-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 (there is no symbol
-table in the archive).</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>In the JIT, <tt>dlsym</tt> on a symbol compiled by the JIT will not work.
+ </li>
+ <li>The JIT does not use mutexes to protect its internal data structures. As
+ 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>
</div>
+<!-- ======================================================================= -->
+<div class="doc_subsection">
+ <a name="ppc-be">Known problems with the PowerPC back-end</a>
+</div>
+
+<div class="doc_text">
+
+<ul>
+<li>none yet</li>
+</ul>
+
+</div>
+
<!-- ======================================================================= -->
<div class="doc_subsection">
<a name="c-be">Known problems with the C back-end</a>