Bug fixed
[oota-llvm.git] / docs / ReleaseNotes.html
index c68cd03aa7a849085ee1eab7732f94de51991c93..1c3d8be1e2cba49a904630f3ec36cabfda81238c 100644 (file)
@@ -2,12 +2,13 @@
                       "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.3 Release Notes</title>
+  <title>LLVM 1.4 Release Notes</title>
 </head>
 <body>
 
-<div class="doc_title">LLVM 1.3 Release Notes</div>
+<div class="doc_title">LLVM 1.4 Release Notes</div>
  
 <ol>
   <li><a href="#intro">Introduction</a></li>
@@ -22,7 +23,8 @@
     <li><a href="#c-fe">Known problems with the C Front-end</a>
     <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="#sparc-be">Known problems with the Sparc 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>
 <div class="doc_text">
 
 <p>This document contains the release notes for the LLVM compiler
-infrastructure, release 1.3.  Here we describe the status of LLVM, including any
+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
 version of this document can be found on the <a
-href="http://llvm.cs.uiuc.edu/releases/1.3/">LLVM 1.3 web site</a>.  If you are
+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>
 
@@ -69,17 +71,11 @@ href="http://llvm.cs.uiuc.edu/releases/">releases page</a>.</p>
 
 <div class="doc_text">
 
-<p>This is the fourth public release of the LLVM compiler infrastructure.  This
-release primarily improves the <a href="#codequality">performance of the
-code</a> produced by all aspects of the LLVM compiler and adds some <a
-href="#newfeatures">new features</a>, though it does <a href="#bugfix">fix a few
-bugs</a> as well.</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 &amp; C++
-SPEC CPU2000 benchmarks, the Olden benchmarks, and the Ptrdist benchmarks.  It
-has also been used to compile <b>many</b> other programs.  LLVM now also works
-with a broad variety of C++ programs, though it has still received less testing
-than the C front-end.</p>
+SPEC CPU95 &amp; 2000 benchmarks, the Olden benchmarks, and the Ptrdist 
+benchmarks, and <b>many</b> other C and C++ programs.</p>
 
 </div>
 
@@ -89,27 +85,72 @@ than the C front-end.</p>
 </div>
 
 <div class="doc_text">
-
 <ol>
-<li>The LLVM <a href="LangRef.html#i_select"><tt>select</tt></a> instruction is
-now fully implemented and supported by all transformations, native code
-generators, and the interpreter.</li>
-<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>
-<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., 
-<tt>-regalloc=linearscan</tt>, <tt>-enable-correct-eh-support</tt>, etc.) </li>
-<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>
-<li>The LLVM induction variable analysis routines have been rewritten.</li>
-<li>LLVM now has new loop unrolling and loop unswitching passes.</li>
-<li>The induction variable substitution pass performs linear function test
-replacement and exit value replacement optimizations.</li>
-<li>LLVM now has first-class support for <a href="GarbageCollection.html">Accurate 
-Garbage Collection</a>, enabling the use of aggressive copying and generational 
-collectors.</li>
-<li>LLVM now includes an implementation of Andersen's interprocedural alias 
-analysis algorithm.</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>
@@ -123,14 +164,16 @@ In this release, the following missing features were implemented:
 <div class="doc_text">
 
 <ol>
-<li><a href="http://llvm.cs.uiuc.edu/PR82">LLVM cannot handle structures with
-more than 256 elements</a></li>
-<li><a href="http://llvm.cs.uiuc.edu/PR38">[bugpoint] External functions used in
-non-instruction entities, such as global constant initializer</a></li>
-<li><a href="http://llvm.cs.uiuc.edu/PR178">Stacker does not handle targets 
-with 64-bit pointers.</a></li>
-<li><a href="http://llvm.cs.uiuc.edu/PR290">Bugpoint doesn't support
-uses of external fns by immediate constant exprs</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>
@@ -144,10 +187,20 @@ issues were fixed:</a>
 <div class="doc_text">
 
 <ol>
-<li><a href="http://llvm.cs.uiuc.edu/PR305">LLVM tools will happily spew
-bytecode onto your terminal</a></li>
-<li><a href="http://llvm.cs.uiuc.edu/PR329">[llvmgcc] type names are not emitted
-for structure typedefs</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>
@@ -159,10 +212,10 @@ In this release, the following build problems were fixed:
 
 <div class="doc_text">
 <ol>
-<li><a href="http://llvm.cs.uiuc.edu/PR301">Minor configure bugs with
--disable/enable-povray and -disable-spec</a></li>
-<li><a href="http://llvm.cs.uiuc.edu/PR289">shell scripts output by gccld don't
-work if you change PATH</a></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>
 
@@ -174,40 +227,9 @@ improvements:</a>
 
 <div class="doc_text">
 <ol>
-<li>Fixed: <a href="http://llvm.cs.uiuc.edu/PR309">[vmcore] Code quality problem
-due to long operand of getelementptr</a></li>
-
-<li>The X86 backend now generates substantially better code for 64-bit integer
-and floating point operations.</li>
-
-<li>The -inline pass no longer inlines mutually recursive functions until it
-hits the inlining threshold.</li>
-
-<li>The -inline pass no longer misses obvious inlining opportunities just
-because the callee eventually calls into an external function.</li>
-
-<li>The -simplifycfg pass can now "if convert" simple statements into the new
-<tt>select</tt> instruction.</li>
-
-<li>The -loopsimplify pass can now break <a
-href="http://llvm.cs.uiuc.edu/PR35">natural loops with multiple backedges</a>
-into multiple nested loops.  This enables a variety of subsequent
-optimizations.</li>
-
-<li>The -adce pass can now eliminate calls to functions that do not not write to
-memory.</li>
-
-<li>The link-time optimizer now runs the -prune-eh pass (to remove unused
-exception handlers).</li>
-
-<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
-operators into the strict versions when useful (such as "<tt>if (A &lt; B || A
-&gt; C)</tt>" into "<tt>if (A &lt; B | A &gt; C)</tt>"</li>
-
-<li>LLVM now has infrastructure for (simple and sparse conditional) constant
-propagation of function calls.  It currently supports a few math library
-functions like sqrt/sin/cos/etc.</li>
+  <li><a href="http://llvm.cs.uiuc.edu/PR362">Ugly code generated for  
+    std::min/std::max</a>
+  </li>
 </ol>
 </div>
 
@@ -219,52 +241,54 @@ were fixed:</a>
 
 <div class="doc_text">
 
-<p>Bugs in the LLVM Core:</p>
+<p>Bugs fixed in the LLVM Core:</p>
 
 <ol>
-<li><a href="http://llvm.cs.uiuc.edu/PR330">[vmcore] Linker causes erroneous
-asssertion</a></li>
-<li><a href="http://llvm.cs.uiuc.edu/PR306">[loopsimplify] Loop simplify
-incorrectly updates dominator information</a></li>
-<li><a href="http://llvm.cs.uiuc.edu/PR310">[tailduplicate] DemoteRegToStack
-breaks SSA form</a></li>
-<li><a href="http://llvm.cs.uiuc.edu/PR313">[X86] JIT miscompiles unsigned short
-to floating point cast</a></li>
-<li><a href="http://llvm.cs.uiuc.edu/PR332">[adce] Crash handling unreachable
-code that unwinds</a></li>
-<li><a href="http://llvm.cs.uiuc.edu/PR333">[sparc] LLC can't emit 2 functions
-of the same name, both having constant pools</a></li>
-<li><a href="http://llvm.cs.uiuc.edu/PR337">[livevar] Live variables missed
-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/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><a href="http://llvm.cs.uiuc.edu/PR326">[llvmgcc] Crash on use of undeclared
-enum type</a></li>
-<li><a href="http://llvm.cs.uiuc.edu/PR298">[llvmgcc] Variable length array
-indexing miscompiled</a></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>
-</div>
 
-<!--=========================================================================-->
-<div class="doc_subsubsection">
-<a name="misc">This release includes the following miscellaneous
-improvements:</a>
-</div>
-
-<div class="doc_text">
+<p>Bugs fixed in the Sparc V9 back-end:</p>
 
-<p>Documentation Improvements</p>
 <ol>
-<li><a href="BytecodeFormat.html">Documentation of the LLVM Bytecode file format
-was added.</a></li>
-<li>All documentation was brought up to HTML 4.01 (Strict) level.</li>
+  <li><a href="http://llvm.cs.uiuc.edu/PR428">[sparcv9] regalloc assertion
+    failure with certain indirect calls</a></li>
 </ol>
-</div>
 
+</div>
 
 <!-- *********************************************************************** -->
 <div class="doc_section">
@@ -274,11 +298,15 @@ was added.</a></li>
 
 <div class="doc_text">
 
-<p>LLVM has been extensively tested on Intel and AMD machines running Red Hat
-Linux.  It has also been tested under FreeBSD, and on Sun UltraSPARC
-workstations running Solaris 8.  Additionally, LLVM works on Mac OS X 10.3 and
-above, but only with the C backend and interpreter; no native machine-code
-generator for the PowerPC is available yet.</p>
+<p>LLVM is known to work in the following platforms:</p>
+
+<ul>
+<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>
+</ul>
 
 <p>The core LLVM infrastructure uses
 <a href="http://www.gnu.org/software/autoconf/">GNU autoconf</a> to adapt itself
@@ -286,21 +314,14 @@ 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>
 
-</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>
+<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., 
+<tt>/cygdrive/c/llvm</tt>).  Also, make sure to install <b>all</b> of the 
+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>
 
@@ -335,12 +356,12 @@ components, please contact us on the llvmdev list.</p>
 
 <ul>
 <li>The following passes are incomplete or buggy: <tt>-pgmdep, -memdep,
-    -ipmodref, -sortstructs, -swapstructs, -cee</tt></li>
-
+    -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>
@@ -353,26 +374,28 @@ components, please contact us on the llvmdev list.</p>
 <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>It is not possible to <tt>dlopen</tt> an LLVM bytecode file in the JIT.</li>
-
-<li>Linking in static archive files (.a files) is very 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>
 
@@ -497,8 +520,9 @@ work:
       We support all builtins which have a C language equivalent (e.g., 
          <tt>__builtin_cos</tt>),  <tt>__builtin_alloca</tt>, 
          <tt>__builtin_types_compatible_p</tt>, <tt>__builtin_choose_expr</tt>,
-         <tt>__builtin_constant_p</tt>, and <tt>__builtin_expect</tt> (ignored).</li>
-
+         <tt>__builtin_constant_p</tt>, and <tt>__builtin_expect</tt>
+         (currently ignored).  We also support builtins for ISO C99 floating
+         point comparison macros (e.g., <tt>__builtin_islessequal</tt>).</li>
   </ol>
 
   <p>The following extensions <b>are</b> known to be supported:</p>
@@ -507,7 +531,7 @@ work:
   <li><a href="http://gcc.gnu.org/onlinedocs/gcc/Labels-as-Values.html#Labels%20as%20Values">Labels as Values</a>: Getting pointers to labels and computed gotos.</li>
   <li><a href="http://gcc.gnu.org/onlinedocs/gcc/Statement-Exprs.html#Statement%20Exprs">Statement Exprs</a>:   Putting statements and declarations inside expressions.</li>
   <li><a href="http://gcc.gnu.org/onlinedocs/gcc/Typeof.html#Typeof">Typeof</a>: <code>typeof</code>: referring to the type of an expression.</li>
-  <li><a href="http://gcc.gnu.org/onlinedocs/gcc/Lvalues.html#Lvalues">Lvalues</a>: Using <code>?:</code>, "<code>,</code>" and casts in lvalues.</li>
+  <li><a href="http://gcc.gnu.org/onlinedocs/gcc-3.4.0/gcc/Lvalues.html#Lvalues">Lvalues</a>: Using <code>?:</code>, "<code>,</code>" and casts in lvalues.</li>
   <li><a href="http://gcc.gnu.org/onlinedocs/gcc/Conditionals.html#Conditionals">Conditionals</a>: Omitting the middle operand of a <code>?:</code> expression.</li>
   <li><a href="http://gcc.gnu.org/onlinedocs/gcc/Long-Long.html#Long%20Long">Long Long</a>: Double-word integers.</li>
   <li><a href="http://gcc.gnu.org/onlinedocs/gcc/Complex.html#Complex">Complex</a>:   Data types for complex numbers.</li>
@@ -568,7 +592,15 @@ Please report any bugs or problems.</p>
 <ul>
 <li>The C++ front-end inherits all problems afflicting the <a href="#c-fe">C
     front-end</a>.</li>
+
+<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 v-tables</a>.
+In particular, it just stores function pointers instead of function
+descriptors in the vtable.  This bug prevents mixing C++ code compiled with
+LLVM with C++ objects compiled by other C++ compilers.</li>
+
 </ul>
+
 </div>
 
 <!-- _______________________________________________________________________ -->
@@ -614,20 +646,34 @@ href="http://gcc.gnu.org/gcc-3.4/changes.html">GCC 3.4 release notes</a>.</li>
 <div class="doc_text">
 
 <ul>
-<li>None so far.
+  <li>none yet</li>
+</ul>
+
+</div>
+
+<!-- ======================================================================= -->
+<div class="doc_subsection">
+  <a name="sparcv9-be">Known problems with the SparcV9 back-end</a>
+</div>
+
+<div class="doc_text">
+
+<ul>
+<li><a href="http://llvm.cs.uiuc.edu/PR60">[sparcv9] SparcV9 backend miscompiles
+several programs in the LLVM test suite</a></li>
 </ul>
 
 </div>
 
 <!-- ======================================================================= -->
 <div class="doc_subsection">
-  <a name="sparc-be">Known problems with the Sparc back-end</a>
+  <a name="ppc-be">Known problems with the PowerPC back-end</a>
 </div>
 
 <div class="doc_text">
 
 <ul>
-<li>There are several programs in the LLVM testsuite that the Sparc code generator is known to miscompile.</li>
+<li>none yet</li>
 </ul>
 
 </div>