<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
                      "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.5 Release Notes</title>
</head>
<body>

<div class="doc_title">LLVM 1.5 Release Notes</div>
 
<ol>
  <li><a href="#intro">Introduction</a></li>
  <li><a href="#whatsnew">What's New?</a></li>
  <li><a href="GettingStarted.html">Installation Instructions</a></li>
  <li><a href="#portability">Portability and Supported Platforms</a></li>
  <li><a href="#knownproblems">Known Problems</a>
  <li><a href="#additionalinfo">Additional Information</a></li>
</ol>

<div class="doc_author">
  <p>Written by the <a href="http://llvm.cs.uiuc.edu">LLVM Team</a><p>
</div>

<!-- *********************************************************************** -->
<div class="doc_section">
  <a name="intro">Introduction</a>
</div>
<!-- *********************************************************************** -->

<div class="doc_text">

<p>This document contains the release notes for the LLVM compiler
infrastructure, release 1.5.  Here we describe the status of LLVM, including any
known problems and major 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.5/">LLVM 1.5 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 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>

<p>Note that if you are reading this file from CVS or the main LLVM web page,
this document applies to the <i>next</i> release, not the current one.  To see
the release notes for the current or previous releases, see the <a
href="http://llvm.cs.uiuc.edu/releases/">releases page</a>.</p>

</div>

<!-- *********************************************************************** -->
<div class="doc_section">
  <a name="whatsnew">What's New?</a>
</div>
<!-- *********************************************************************** -->

<div class="doc_text">

<p>This is the sixth public release of the LLVM Compiler Infrastructure.</p>

<p>LLVM 1.5 is known to correctly compile a wide range of C and C++ programs,
includes bug fixes for those problems found since the 1.4 release, and includes
a large number of new features and enhancements, described below.</p>

</div>

<!--=========================================================================-->
<div class="doc_subsection">
<a name="newfeatures">New Features in LLVM 1.5</a>
</div>

<!--_________________________________________________________________________-->
<div class="doc_subsubsection"><a name="newcg">New Native Code
Generators</a></div>

<div class="doc_text">
<p>
This release includes new native code generators for <a
href="#alpha-be">Alpha</a>, <a href="#ia64-be">IA-64</a>, and <a
href="#sparcv8">SPARC-V8</a> (32-bit SPARC).  These code generators are still
beta quality, but are progressing rapidly.  The Alpha backend is implemented
with an eye towards being compatible with the widely used SimpleScalar
simulator.
</p>
</div>

<!--_________________________________________________________________________-->
<div class="doc_subsubsection"><a name="selectiondag">New Instruction
Selector Framework</a></div>

<div class="doc_text">
<p>This release includes a <a href="CodeGenerator.html#instselect">new framework
for building instruction selectors</a>, which has long been the hardest part of
building a new LLVM target.  This framework handles a lot of the mundane (but
easy to get wrong) details of writing the instruction selector, such as
generating efficient code for <a
href="LangRef.html#i_getelementptr">getelementptr</a> instructions, promoting
small integer types to larger types (e.g.  for RISC targets with one size of
integer registers), expanding 64-bit integer operations for 32-bit targets, etc.
Currently, the X86, PowerPC, Alpha, and IA-64 backends use this framework.  The
SPARC backends will be migrated when time permits.
</p>
</div>

<!--_________________________________________________________________________-->
<div class="doc_subsubsection"><a name="customccs">New Support for Per-Function
Calling Conventions</a></div>

<div class="doc_text">
<p>LLVM 1.5 adds supports for <a href="LangRef.html#callingconv">per-function
calling conventions</a>.  Traditionally, the LLVM code generators match the
native C calling conventions for a target.  This is important for compatibility,
but is not very flexible.  This release allows custom calling conventions to be
established for functions, and defines three target-independent conventions (<a
href="LangRef.html#callingconv">C call, fast call, and cold call</a>) which may
be supported by code generators.  When possible, the LLVM optimizer promotes C
functions to use the "fastcc" convention, allowing the use of more efficient
calling sequences (e.g., parameters are passed in registers in the X86 target).
</p>

<p>Targets may now also define target-specific calling conventions, allowing
LLVM to fully support calling convention altering options (e.g. GCC's
<tt>-mregparm</tt> flag) and well-defined target conventions (e.g. stdcall and
fastcall on X86).</p>
</div>

<!--_________________________________________________________________________-->
<div class="doc_subsubsection"><a name="tailcalls">New Support for
Proper Tail Calls</a></div>

<div class="doc_text">
<p>The release now includes support for <a
href="http://doi.acm.org/10.1145/277650.277719">proper tail calls</a>, as
required to implement languages like Scheme.  Tail calls make use of two
features: custom calling conventions (described above), which allow the code
generator to use a convention where the caller deallocates its stack before it
returns.  The second feature is a flag on the <a href="LangRef.html#i_call">call
instruction</a>, which indicates that the callee does not access the caller's
stack frame (indicating that it is acceptable to deallocate the caller stack
before invoking the callee).  LLVM proper tail calls run on the system stack (as
do normal calls), supports indirect tail calls, tail calls with arbitrary
numbers of arguments, tail calls where the callee requires more argument space
than the caller, etc.  The only case not supported are varargs calls, but that
could be added if desired.
</p>

<p>To ensure a call is interpreted as a tail call, a front-end must mark
functions as "fastcc", mark calls with the 'tail' marker, and follow the call
with a return of the called value (or void).  The optimizer and code generator
attempt to handle more general cases, but the simple case will always work if
the code generator supports tail calls.  Here is an example:</p>

<pre>
    fastcc int %bar(int %X, int(double, int)* %FP) {       ;<i> fastcc</i>
        %Y = tail call fastcc int %FP(double 0.0, int %X)  ;<i> tail, fastcc</i>
        ret int %Y
    }
</pre>

<p>In LLVM 1.5, the X86 code generator is the only target that has been enhanced
to support proper tail calls (other targets will be enhanced in future).
Further, because this support was added very close to the release, it is
disabled by default.  Pass <tt>-enable-x86-fastcc</tt> to llc to enable it (this
will be enabled by default in the next release).  The example above compiles to:
</p>

<pre>
    bar:
        sub ESP, 8                   # Callee uses more space than the caller
        mov ECX, DWORD PTR [ESP + 8] # Get the old return address
        mov DWORD PTR [ESP + 4], 0   # First half of 0.0
        mov DWORD PTR [ESP + 8], 0   # Second half of 0.0
        mov DWORD PTR [ESP], ECX     # Put the return address where it belongs
        jmp EDX                      # Tail call "FP"
</pre>

<p>
With fastcc on X86, the first two integer arguments are passed in EAX/EDX, the
callee pops its arguments off the stack, and the argument area is always a
multiple of 8 bytes in size.
</p>

</div>

<!--_________________________________________________________________________-->
<div class="doc_subsubsection">Other New Features</div>

<div class="doc_text">
<ol>
  <li>LLVM now includes an <a href="http://llvm.cs.uiuc.edu/PR415">
      Interprocedural Sparse Conditional Constant Propagation</a> pass, named
     -ipsccp, which is run by default at link-time.</li>
  <li>LLVM 1.5 is now about 15% faster than LLVM 1.4 and its core data 
      structures use about 30% less memory.</li>
  <li>Support for Microsoft Visual Studio is improved, and <a 
      href="GettingStartedVS.html">now documented</a>.  Most LLVM tools build
      natively with Visual C++ now.</li>
  <li><a href="GettingStarted.html#config">Configuring LLVM to build a subset
      of the available targets</a> is now implemented, via the
      <tt>--enable-targets=</tt> option.</li>
   <li>LLVM can now create native shared libraries with '<tt>llvm-gcc ...
       -shared -Wl,-native</tt>' (or with <tt>-Wl,-native-cbe</tt>).</li>
   <li>LLVM now supports a new "<a href="LangRef.html#i_prefetch">llvm.prefetch
       </a>" intrinsic, and llvm-gcc now supports __builtin_prefetch.
  <li>LLVM now supports intrinsics for <a href="LangRef.html#int_count">bit
      counting</a> and llvm-gcc now implements the GCC
      <tt>__builtin_popcount</tt>, <tt>__builtin_ctz</tt>, and
      <tt>__builtin_clz</tt> builtins.</li>
  <li>LLVM now mostly builds on HP-UX with the HP aCC Compiler.</li>
  <li>The LLVM X86 backend can now emit Cygwin-compatible .s files.</li>
  <li>LLVM now includes workarounds in the code generator generator which
      reduces the likelyhood of <a href="http://llvm.cs.uiuc.edu/PR448">GCC
      hitting swap during optimized builds</a>.</li>
  <li>The <a href="http://llvm.cs.uiuc.edu/ProjectsWithLLVM/#llvmtv">LLVM
      Transformation Visualizer</a> (llvm-tv) project has been updated to
      work with LLVM 1.5.</li>
  <li>Nightly tester output is now archived on the <a
      href="http://mail.cs.uiuc.edu/pipermail/llvm-testresults/">
      llvm-testresults</a> mailing list.</li>

</ol>
</div>

<!--=========================================================================-->
<div class="doc_subsection">
<a name="codequality">Code Quality Improvements in LLVM 1.5</a>
</div>

<div class="doc_text">
<ol>
<li>The new -simplify-libcalls pass improves code generated for well-known
library calls. The pass optimizes calls to many of the string, memory, and
standard I/O functions (e.g. replace the calls with simpler/faster calls) when
possible, given information known statically about the arguments to the call.
</li>

<li>The -globalopt pass now promotes non-address-taken static globals that are
only accessed in main to SSA registers.</li>

<li>Loops with trip counts based on array pointer comparisons (e.g. "<tt>for (i
= 0; &amp;A[i] != &amp;A[n]; ++i) ...</tt>") are optimized better than before,
which primarily helps iterator-intensive C++ code.</li>

<li>The optimizer now eliminates simple cases where redundant conditions exist
    between neighboring blocks.</li>

<li>The reassociation pass (which turns (1+X+3) into (X+1+3) among other
things), is more aggressive and intelligent.</li>

<li>The -prune-eh pass now detects no-return functions in addition to the
    no-unwind functions it did before.</li>

<li>The -globalsmodref alias analysis generates more precise results in some
    cases.</li>
</ol>
</div>


<!--=========================================================================-->
<div class="doc_subsection">
<a name="codequality">Code Generator Improvements in LLVM 1.5</a>
</div>

<div class="doc_text">
<ol>
<li>The code generator now can provide and use information about commutative
    two-address instructions when performing register allocation.</li>

<li>The code generator now tracks function live-in registers explicitly, 
    instead of requiring the target to generate 'implicit defs' at the
    entry to a function.</li>

<li>The code generator can lower integer division by a constant to
    multiplication by a magic constant and multiplication by a constant into
    shift/add sequences.</li>

<li>The code generator compiles fabs/fneg/sin/cos/sqrt to assembly instructions
    when possible.</li>

<li>The PowerPC backend generates better code in many cases, making use of 
    FMA instructions and the recording ("dot") forms of various PowerPC
    instructions.</li>
</ol>
</div>


<!--=========================================================================-->
<div class="doc_subsection">
<a name="bugfix">Significant Bugs Fixed in LLVM 1.5</a>
</div>

<div class="doc_text">


<p>Bugs fixed in the LLVM Core:</p>
<ol>
   <li><a href="http://llvm.cs.uiuc.edu/PR491">[dse] DSE deletes stores that 
       are partially overwritten by smaller stores</a></li>
   <li><a href="http://llvm.cs.uiuc.edu/PR548">[instcombine] miscompilation of 
       setcc or setcc in one case</a></li>
   <li>Transition code for LLVM 1.0 style varargs was removed from the .ll file
       parser.  LLVM 1.0 bytecode files are still supported. </li>
</ol>

<p>Code Generator Bugs:</p>
<ol>
   <li><a href="http://llvm.cs.uiuc.edu/PR490">[cbackend] Logical constant 
       expressions (and/or/xor) not implemented</a>.</li>
   <li><a href="http://llvm.cs.uiuc.edu/PR511">[cbackend] C backend does not 
       respect 'volatile'</a>.</li>
   <li>The JIT sometimes miscompiled globals and constant pool entries for
       64-bit integer constants on 32-bit hosts.</li>
   <li>The C backend should no longer produce code that crashes ICC 8.1.</li>
</ol>

<p>Bugs in the C/C++ front-end:</p>
<ol>
   <li><a href="http://llvm.cs.uiuc.edu/PR487">[llvmgcc] llvm-gcc incorrectly 
       rejects some constant initializers involving the addresses of array 
       elements</a></li>
   <li><a href="http://llvm.cs.uiuc.edu/PR501">[llvm-g++] Crash compiling 
       anonymous union</a></li>
   <li><a href="http://llvm.cs.uiuc.edu/PR509">[llvm-g++] Do not use dynamic 
       initialization where static init will do</a></li>
   <li><a href="http://llvm.cs.uiuc.edu/PR510">[llvmgcc] Field offset 
       miscalculated for some structure fields following bit fields</a></li>
   <li><a href="http://llvm.cs.uiuc.edu/PR513">[llvm-g++] Temporary lifetimes 
       incorrect for short circuit logical operations</a></li>
   <li><a href="http://llvm.cs.uiuc.edu/PR517">[llvm-gcc] Crash compiling 
       bitfield &lt;-&gt; aggregate assignment</a></li>
   <li><a href="http://llvm.cs.uiuc.edu/PR520">[llvm-g++] Error compiling 
       virtual function thunk with an unnamed argument</a></li>
   <li><a href="http://llvm.cs.uiuc.edu/PR522">[llvm-gcc] Crash on certain 
       C99 complex number routines</a></li>
   <li><a href="http://llvm.cs.uiuc.edu/PR529">[llvm-g++] Crash using placement
       new on an array type</a></li>
</ol>

</div>

<!-- *********************************************************************** -->
<div class="doc_section">
  <a name="portability">Portability and Supported Platforms</a>
</div>
<!-- *********************************************************************** -->

<div class="doc_text">

<p>LLVM is known to work on the following platforms:</p>

<ul>
  <li>Intel and AMD machines running Red Hat Linux, Fedora Core 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 (limited
    support is available for native builds with Visual C++).</li>
<li>PowerPC-based Mac OS X systems, running 10.2 and above.</li>
<li>Alpha-based machines running Debian GNU/Linux.</li>
<li>Itanium-based machines running Linux and HP-UX.</li>
</ul>

<p>The core LLVM infrastructure uses
<a href="http://www.gnu.org/software/autoconf/">GNU autoconf</a> to adapt itself
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_section">
  <a name="knownproblems">Known Problems</a>
</div>
<!-- *********************************************************************** -->

<div class="doc_text">

<p>This section contains all known problems with the LLVM system, listed by
component.  As new problems are discovered, they will be added to these
sections.  If you run into a problem, please check the <a
href="http://llvm.cs.uiuc.edu/bugs/">LLVM bug database</a> and submit a bug if
there isn't already one.</p>

</div>

<!-- ======================================================================= -->
<div class="doc_subsection">
  <a name="experimental">Experimental features included with this release</a>
</div>

<div class="doc_text">

<p>The following components of this LLVM release are either untested, known to
be broken or unreliable, or are in early development.  These components should
not be relied on, and bugs should not be filed against them, but they may be
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, and may be removed in future
    releases: <tt>-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 
    <tt>-regalloc=iterativescan</tt>) is not stable.</li>
<li>The SparcV8, Alpha, and IA64 code generators are experimental.</li>
</ul>

</div>

<!-- ======================================================================= -->
<div class="doc_subsection">
  <a name="core">Known problems with the LLVM Core</a>
</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><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>
</ul>
</div>

<!-- ======================================================================= -->
<div class="doc_subsection">
  <a name="c-fe">Known problems with the C front-end</a>
</div>

<!-- _______________________________________________________________________ -->
<div class="doc_subsubsection">Bugs</div>

<div class="doc_text">
<ul>
<li>C99 Variable sized arrays do not release stack memory when they go out of 
    scope.  Thus, the following program may run out of stack space:
<pre>
    for (i = 0; i != 1000000; ++i) {
      int X[n];
      foo(X);
    }
</pre></li>

<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>

</ul>
</div>

<!-- _______________________________________________________________________ -->
<div class="doc_subsubsection">
  Notes
</div>

<div class="doc_text">

<ul>

<li>Inline assembly is not yet supported.</li>

<li>"long double" is transformed by the front-end into "double".  There is no
support for floating point data types of any size other than 32 and 64
bits.</li>
    
<li>The following Unix system functionality has not been tested and may not
work:
  <ol>
  <li><tt>sigsetjmp</tt>, <tt>siglongjmp</tt> - These are not turned into the
      appropriate <tt>invoke</tt>/<tt>unwind</tt> instructions.  Note that
      <tt>setjmp</tt> and <tt>longjmp</tt> <em>are</em> compiled correctly.
  <li><tt>getcontext</tt>, <tt>setcontext</tt>, <tt>makecontext</tt>
      - These functions have not been tested.
  </ol></li>

<li>Although many GCC extensions are supported, some are not.  In particular,
    the following extensions are known to <b>not be</b> supported:
  <ol>
  <li><a href="http://gcc.gnu.org/onlinedocs/gcc/Local-Labels.html#Local%20Labels">Local Labels</a>: Labels local to a block.</li>
  <li><a href="http://gcc.gnu.org/onlinedocs/gcc/Nested-Functions.html#Nested%20Functions">Nested Functions</a>: As in Algol and Pascal, lexical scoping of functions.</li>
  <li><a href="http://gcc.gnu.org/onlinedocs/gcc/Constructing-Calls.html#Constructing%20Calls">Constructing Calls</a>: Dispatching a call to another function.</li>
  <li><a href="http://gcc.gnu.org/onlinedocs/gcc/Extended-Asm.html#Extended%20Asm">Extended Asm</a>: Assembler instructions with C expressions as operands.</li>
  <li><a href="http://gcc.gnu.org/onlinedocs/gcc/Constraints.html#Constraints">Constraints</a>: Constraints for asm operands.</li>
  <li><a href="http://gcc.gnu.org/onlinedocs/gcc/Asm-Labels.html#Asm%20Labels">Asm Labels</a>: Specifying the assembler name to use for a C symbol.</li>
  <li><a href="http://gcc.gnu.org/onlinedocs/gcc/Explicit-Reg-Vars.html#Explicit%20Reg%20Vars">Explicit Reg Vars</a>: Defining variables residing in specified registers.</li>
  <li><a href="http://gcc.gnu.org/onlinedocs/gcc/Vector-Extensions.html#Vector%20Extensions">Vector Extensions</a>: Using vector instructions through built-in functions.</li>
  <li><a href="http://gcc.gnu.org/onlinedocs/gcc/Target-Builtins.html#Target%20Builtins">Target Builtins</a>:   Built-in functions specific to particular targets.</li>
  <li><a href="http://gcc.gnu.org/onlinedocs/gcc/Thread_002dLocal.html">Thread-Local</a>: Per-thread variables.</li>
  <li><a href="http://gcc.gnu.org/onlinedocs/gcc/Pragmas.html#Pragmas">Pragmas</a>: Pragmas accepted by GCC.</li>
  </ol>

  <p>The following GCC extensions are <b>partially</b> supported.  An ignored
  attribute means that the LLVM compiler ignores the presence of the attribute,
  but the code should still work.  An unsupported attribute is one which is
  ignored by the LLVM compiler and will cause a different interpretation of
  the program.</p>

  <ol>
  <li><a href="http://gcc.gnu.org/onlinedocs/gcc/Variable-Length.html#Variable%20Length">Variable Length</a>:
      Arrays whose length is computed at run time.<br>
      Supported, but allocated stack space is not freed until the function returns (noted above).</li>

  <li><a href="http://gcc.gnu.org/onlinedocs/gcc/Function-Attributes.html#Function%20Attributes">Function Attributes</a>:

      Declaring that functions have no side effects or that they can never
      return.<br>

      <b>Supported:</b> <tt>format</tt>, <tt>format_arg</tt>, <tt>non_null</tt>,
      <tt>noreturn</tt>, <tt>constructor</tt>, <tt>destructor</tt>,
      <tt>unused</tt>,
      <tt>deprecated</tt>, <tt>warn_unused_result</tt>, <tt>weak</tt><br>

      <b>Ignored:</b> <tt>noinline</tt>,
      <tt>always_inline</tt>, <tt>pure</tt>, <tt>const</tt>, <tt>nothrow</tt>,
      <tt>malloc</tt>, <tt>no_instrument_function</tt>, <tt>cdecl</tt><br>

      <b>Unsupported:</b> <tt>used</tt>, <tt>section</tt>, <tt>alias</tt>,
      <tt>visibility</tt>, <tt>regparm</tt>, <tt>stdcall</tt>,
      <tt>fastcall</tt>, all other target specific attributes</li>
   
  <li><a href="http://gcc.gnu.org/onlinedocs/gcc/Variable-Attributes.html#Variable%20Attributes">Variable Attributes</a>:
      Specifying attributes of variables.<br>
      <b>Supported:</b> <tt>cleanup</tt>, <tt>common</tt>, <tt>nocommon</tt>,
                        <tt>deprecated</tt>, <tt>transparent_union</tt>,
                        <tt>unused</tt>, <tt>weak</tt><br>

      <b>Unsupported:</b> <tt>aligned</tt>, <tt>mode</tt>, <tt>packed</tt>,
                        <tt>section</tt>, <tt>shared</tt>, <tt>tls_model</tt>,
                        <tt>vector_size</tt>, <tt>dllimport</tt>, 
                        <tt>dllexport</tt>, all target specific attributes.</li>

  <li><a href="http://gcc.gnu.org/onlinedocs/gcc/Type-Attributes.html#Type%20Attributes">Type Attributes</a>:	Specifying attributes of types.<br>
      <b>Supported:</b> <tt>transparent_union</tt>, <tt>unused</tt>,
                        <tt>deprecated</tt>, <tt>may_alias</tt><br>

      <b>Unsupported:</b> <tt>aligned</tt>, <tt>packed</tt>, 
                        all target specific attributes.</li>

  <li><a href="http://gcc.gnu.org/onlinedocs/gcc/Other-Builtins.html#Other%20Builtins">Other Builtins</a>:
      Other built-in functions.<br>
      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>
         (currently ignored).  We also support builtins for ISO C99 floating
         point comparison macros (e.g., <tt>__builtin_islessequal</tt>), 
         <tt>__builtin_prefetch</tt>, <tt>__builtin_popcount[ll]</tt>,
         <tt>__builtin_clz[ll]</tt>, and <tt>__builtin_ctz[ll]</tt>.</li>
  </ol>

  <p>The following extensions <b>are</b> known to be supported:</p>

  <ol>
  <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-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>
  <li><a href="http://gcc.gnu.org/onlinedocs/gcc/Hex-Floats.html#Hex%20Floats">Hex Floats</a>:Hexadecimal floating-point constants.</li>
  <li><a href="http://gcc.gnu.org/onlinedocs/gcc/Zero-Length.html#Zero%20Length">Zero Length</a>: Zero-length arrays.</li>
  <li><a href="http://gcc.gnu.org/onlinedocs/gcc/Empty-Structures.html#Empty%20Structures">Empty Structures</a>: Structures with no members.</li>
  <li><a href="http://gcc.gnu.org/onlinedocs/gcc/Variadic-Macros.html#Variadic%20Macros">Variadic Macros</a>: Macros with a variable number of arguments.</li>
  <li><a href="http://gcc.gnu.org/onlinedocs/gcc/Escaped-Newlines.html#Escaped%20Newlines">Escaped Newlines</a>:  Slightly looser rules for escaped newlines.</li>
  <li><a href="http://gcc.gnu.org/onlinedocs/gcc/Subscripting.html#Subscripting">Subscripting</a>: Any array can be subscripted, even if not an lvalue.</li>
  <li><a href="http://gcc.gnu.org/onlinedocs/gcc/Pointer-Arith.html#Pointer%20Arith">Pointer Arith</a>: Arithmetic on <code>void</code>-pointers and function pointers.</li>
  <li><a href="http://gcc.gnu.org/onlinedocs/gcc/Initializers.html#Initializers">Initializers</a>: Non-constant initializers.</li>
  <li><a href="http://gcc.gnu.org/onlinedocs/gcc/Compound-Literals.html#Compound%20Literals">Compound Literals</a>: Compound literals give structures, unions,
or arrays as values.</li>
  <li><a href="http://gcc.gnu.org/onlinedocs/gcc/Designated-Inits.html#Designated%20Inits">Designated Inits</a>: Labeling elements of initializers.</li>
  <li><a href="http://gcc.gnu.org/onlinedocs/gcc/Cast-to-Union.html#Cast%20to%20Union">Cast to Union</a>: Casting to union type from any member of the union.</li>
  <li><a href="http://gcc.gnu.org/onlinedocs/gcc/Case-Ranges.html#Case%20Ranges">Case Ranges</a>: `case 1 ... 9' and such.</li>
  <li><a href="http://gcc.gnu.org/onlinedocs/gcc/Mixed-Declarations.html#Mixed%20Declarations">Mixed Declarations</a>: Mixing declarations and code.</li>
  <li><a href="http://gcc.gnu.org/onlinedocs/gcc/Function-Prototypes.html#Function%20Prototypes">Function Prototypes</a>: Prototype declarations and old-style definitions.</li>
  <li><a href="http://gcc.gnu.org/onlinedocs/gcc/C_002b_002b-Comments.html#C_002b_002b-Comments">C++ Comments</a>: C++ comments are recognized.</li>
  <li><a href="http://gcc.gnu.org/onlinedocs/gcc/Dollar-Signs.html#Dollar%20Signs">Dollar Signs</a>: Dollar sign is allowed in identifiers.</li>
  <li><a href="http://gcc.gnu.org/onlinedocs/gcc/Character-Escapes.html#Character%20Escapes">Character Escapes</a>: <code>\e</code> stands for the character &lt;ESC&gt;.</li>
  <li><a href="http://gcc.gnu.org/onlinedocs/gcc/Alignment.html#Alignment">Alignment</a>: Inquiring about the alignment of a type or variable.</li>
  <li><a href="http://gcc.gnu.org/onlinedocs/gcc/Inline.html#Inline">Inline</a>: Defining inline functions (as fast as macros).</li>
  <li><a href="http://gcc.gnu.org/onlinedocs/gcc/Alternate-Keywords.html#Alternate%20Keywords">Alternate Keywords</a>:<code>__const__</code>, <code>__asm__</code>, etc., for header files.</li>
  <li><a href="http://gcc.gnu.org/onlinedocs/gcc/Incomplete-Enums.html#Incomplete%20Enums">Incomplete Enums</a>:  <code>enum foo;</code>, with details to follow.</li>
  <li><a href="http://gcc.gnu.org/onlinedocs/gcc/Function-Names.html#Function%20Names">Function Names</a>: Printable strings which are the name of the current function.</li>
  <li><a href="http://gcc.gnu.org/onlinedocs/gcc/Return-Address.html#Return%20Address">Return Address</a>: Getting the return or frame address of a function.</li>
  <li><a href="http://gcc.gnu.org/onlinedocs/gcc/Unnamed-Fields.html#Unnamed%20Fields">Unnamed Fields</a>: Unnamed struct/union fields within structs/unions.</li>
  <li><a href="http://gcc.gnu.org/onlinedocs/gcc/Attribute-Syntax.html#Attribute%20Syntax">Attribute Syntax</a>: Formal syntax for attributes.</li>
  </ol></li>

</ul>

<p>If you run into GCC extensions which have not been included in any of these
lists, please let us know (also including whether or not they work).</p>

</div>

<!-- ======================================================================= -->
<div class="doc_subsection">
  <a name="c++-fe">Known problems with the C++ front-end</a>
</div>

<div class="doc_text">

<p>For this release, the C++ front-end is considered to be fully
tested and works for a number of non-trivial programs, including LLVM
itself.</p>

</div>

<!-- _______________________________________________________________________ -->
<div class="doc_subsubsection">Bugs</div>

<div class="doc_text">

<ul>
<li>The C++ front-end inherits all problems afflicting the <a href="#c-fe">C
    front-end</a>.</li>

</ul>

</div>

<!-- _______________________________________________________________________ -->
<div class="doc_subsubsection">
  Notes
</div>

<div class="doc_text">

<ul>

<li>The C++ front-end is based on a pre-release of the GCC 3.4 C++ parser.  This
parser is significantly more standards compliant (and picky) than prior GCC
versions.  For more information, see the C++ section of the <a
href="http://gcc.gnu.org/gcc-3.4/changes.html">GCC 3.4 release notes</a>.</li>

<li>Destructors for local objects are not always run when a <tt>longjmp</tt> is
    performed. In particular, destructors for objects in the <tt>longjmp</tt>ing
    function and in the <tt>setjmp</tt> receiver function may not be run.
    Objects in intervening stack frames will be destroyed, however (which is
    better than most compilers).</li>

<li>The LLVM C++ front-end follows the <a
    href="http://www.codesourcery.com/cxx-abi">Itanium C++ ABI</a>.
    This document, which is not Itanium specific, specifies a standard for name
    mangling, class layout, v-table layout, RTTI formats, and other C++
    representation issues.  Because we use this API, code generated by the LLVM
    compilers should be binary compatible with machine code generated by other
    Itanium ABI C++ compilers (such as G++, the Intel and HP compilers, etc).
    <i>However</i>, the exception handling mechanism used by LLVM is very
    different from the model used in the Itanium ABI, so <b>exceptions will not
    interact correctly</b>. </li>

</ul>

</div>

<!-- ======================================================================= -->
<div class="doc_subsection">
  <a name="c-be">Known problems with the C back-end</a>
</div>

<div class="doc_text">

<ul>

<li>The C back-end produces code that violates the ANSI C Type-Based Alias
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/PR56">Zero arg vararg functions are not 
supported</a>.  This should not affect LLVM produced by the C or C++ 
frontends.</li>

</ul>

</div>

<!-- ======================================================================= -->
<div class="doc_subsection">
  <a name="x86-be">Known problems with the X86 back-end</a>
</div>

<div class="doc_text">

<ul>
<li><a href="http://llvm.cs.uiuc.edu/PR566">Memory Mapped I/O Intrinsics do not fence memory</a></li>
</ul>

</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="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="alpha-be">Known problems with the Alpha back-end</a>
</div>

<div class="doc_text">

<ul>

<li>On 21164s, some rare FP arithmetic sequences which may trap do not have the
appropriate nops inserted to ensure restartability.</li>

<li>Defining vararg functions is not supported (but calling them is ok).</li>

<li>Due to the vararg problems, C++ exceptions do not work.  Small changes are required to the CFE (which break correctness in the exception handler) to compile the exception handling library (and thus the C++ standard library).</li>

</ul>

</div>

<!-- ======================================================================= -->
<div class="doc_subsection">
  <a name="ia64-be">Known problems with the IA64 back-end</a>
</div>

<div class="doc_text">

<ul>

<li>C++ programs are likely to fail on IA64, as calls to <tt>setjmp</tt> are
made where the argument is not 16-byte aligned, as required on IA64. (Strictly
speaking this is not a bug in the IA64 back-end; it will also be encountered
when building C++ programs using the C back-end.)</li>

<li>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>

<li>There are a few ABI violations which will lead to problems when mixing LLVM
output with code built with other compilers, particularly for floating-point
programs.</li>

<li>Defining vararg functions is not supported (but calling them is ok).</li>

</ul>

</div>

<!-- ======================================================================= -->
<div class="doc_subsection">
  <a name="sparcv8">Known problems with the SPARC-V8 back-end</a>
</div>

<div class="doc_text">

<ul>
<li>Many features are still missing (e.g. support for 64-bit integer
arithmetic).</li>

<li>This backend needs to be updated to use the SelectionDAG instruction
selection framework.</li>
</ul>

</div>

<!-- *********************************************************************** -->
<div class="doc_section">
  <a name="additionalinfo">Additional Information</a>
</div>
<!-- *********************************************************************** -->

<div class="doc_text">

<p>A wide variety of additional information is available on the <a
href="http://llvm.cs.uiuc.edu">LLVM web page</a>, including <a
href="http://llvm.cs.uiuc.edu/docs/">documentation</a> and <a
href="http://llvm.cs.uiuc.edu/pubs/">publications describing algorithms and
components implemented in LLVM</a>.  The web page also contains versions of the
API documentation which is up-to-date with the CVS version of the source code.
You can access versions of these documents specific to this release by going
into the "<tt>llvm/doc/</tt>" directory in the LLVM tree.</p>

<p>If you have any questions or comments about LLVM, please feel free to contact
us via the <a href="http://llvm.cs.uiuc.edu/docs/#maillist"> mailing
lists</a>.</p>

</div>

<!-- *********************************************************************** -->

<hr>
<address>
  <a href="http://jigsaw.w3.org/css-validator/check/referer"><img
  src="http://jigsaw.w3.org/css-validator/images/vcss" alt="Valid CSS!"></a>
  <a href="http://validator.w3.org/check/referer"><img
  src="http://www.w3.org/Icons/valid-html401" alt="Valid HTML 4.01!" /></a>

  <a href="http://llvm.cs.uiuc.edu">The LLVM Compiler Infrastructure</a><br>
  Last modified: $Date$
</address>

</body>
</html>
