<!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.8 Release Notes</title>
</head>
<body>

<div class="doc_title">LLVM 1.8 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.org">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.8.  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 (corresponding to LLVM CVS) can be found
on the <a
href="http://llvm.org/releases/">LLVM releases 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.org/">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.org/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 ninth public release of the LLVM Compiler Infrastructure. This
release incorporates a large number of enhancements and new features,
including DWARF debugging support (C and C++ on Darwin/PPC), improved inline
assembly support, a new <a href="http://llvm.org/nightlytest/">nightly 
tester</a>, llvm-config enhancements, many bugs
fixed, and performance and compile time improvements.
</p>

</div>

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

<!--_________________________________________________________________________-->
<div class="doc_subsubsection"><a name="dwarf">DWARF debugging 
support </a></div>

<div class="doc_text">

<p>The llvm-gcc4 C front-end now generates debugging info for C and C++.  This
information is propagated through the compiler and the code generator can
currently produce DWARF debugging information from it.  DWARF is a standard
debugging format used on many platforms, but currently LLVM only includes 
target support for Mac OS X targets for the 1.8 release.
</p>

</div>

<!--_________________________________________________________________________-->
<div class="doc_subsubsection"><a name="inlineasm">Inline Assembly
Support</a></div>

<div class="doc_text">

<p>Inline assembly support is substantially improved in LLVM 1.8 over LLVM 1.7.
Many unsupported features are now supported, and inline asm support in the X86
backend is far better.  llvm-gcc4 now supports global register variables as 
well.</p>

</div>

<!--_________________________________________________________________________-->
<div class="doc_subsubsection"><a name="loopopt">Loop Optimizer Improvements</a></div>

<div class="doc_text">

<p>The loop optimizer passes now uses "Loop-Closed SSA Form", which makes it
easier to update SSA form as loop transformations change the code.  An 
immediate benefit of this is that the loop unswitching pass can now unswitch
loops in more cases.
</p>

</div>

<!--_________________________________________________________________________-->
<div class="doc_subsubsection"><a name="jumptab">Jump Table Support for Switches
</a></div>

<div class="doc_text">

<p>The code generator now lowers switch statements to jump tables, providing
significant performance boosts for applications (e.g. interpreters) whose
performance is highly correlated to switch statement performance.</p>

</div>

<!--_________________________________________________________________________-->
<div class="doc_subsubsection"><a name="jitrelease">Deallocation of JIT'd 
Machine Code
</a></div>

<div class="doc_text">

<p>The LLVM JIT now allows clients to deallocate machine code JIT'd to its code
buffer.  This is important for long living applications that depend on the JIT.
</p>

</div>

<!--_________________________________________________________________________-->
<div class="doc_subsubsection"><a name="other">Other Improvements</a></div>

<div class="doc_text">

<p>This release includes many other improvements, including improvements to
   the optimizers and code generators (improving the generated code) changes to
   speed up the compiler in many ways (improving algorithms and fine tuning 
   code), and changes to reduce the code size of the compiler itself.</p>

<p>More specific changes include:</p>

<ul>
<li>LLVM 1.8 includes an initial ARM backend.  This backend is in early 
    development stages.</li>
<li>LLVM 1.8 now includes significantly better support for mingw and 
    cygwin.</li>
<li>The <a href="CommandGuide/html/llvm-config.html">llvm-config</a> tool is 
    now built by default and has several new features.</li>
<li>The X86 and PPC backends now use the correct platform ABI for passing 
    vectors as arguments to functions.</li>
<li>The X86 backend now includes support for the Microsoft ML assembler 
    ("MASM").</li>
<li>The PowerPC backend now pattern matches the 'rlwimi' instruction more 
    aggressively.</li>
<li>Most of LLVM is now built with "-pedantic", ensuring better portability 
    to more C++ Compilers.</li>
<li>The PowerPC backend now includes initial 64-bit support.  The JIT is not
    complete, and the static compiler has a couple of known bugs, but support
    is mostly in place. LLVM 1.9 will include completed PPC-64 support. </li>

</ul>
</div>

<!--=========================================================================-->
<div class="doc_subsection">
<a name="changes">Significant Changes in LLVM 1.8</a>
</div>

<div class="doc_text">
<ul>
<li>The LLVM "SparcV9" backend (deprecated in LLVM 1.7) has been removed in 
LLVM 1.8.  The LLVM "Sparc" backend replaces it.</li>
<li>The --version option now prints more useful information, including the
    build configuration for the tool.</li>
</ul>
</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>Intel and AMD machines running on Win32 using MinGW libraries (native)</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 and X86-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.org/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 <a href="http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev">LLVMdev list</a>.</p>

<ul>
<li>The <tt>-cee</tt> pass is known to be buggy, and may be removed in in a 
    future release.</li>
<li>The IA64 code generator is experimental.</li>
<li>The Alpha JIT is experimental.</li>
<li>"<tt>-filetype=asm</tt>" (the default) is the only supported value for the 
    <tt>-filetype</tt> llc option.</li>
</ul>

</div>

<!-- ======================================================================= -->
<div class="doc_subsection">
  <a name="build">Known problems with the Build System</a>
</div>

<div class="doc_text">

<ul>
<li>none yet</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>
</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">

<p>
llvm-gcc3 has many significant problems that are fixed by llvm-gcc4.
Two major ones include:</p>

<ul>
<li>With llvm-gcc3, 
    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>With llvm-gcc3, Initialization of global union variables can only be done <a
href="http://llvm.org/PR162">with the largest union member</a>.</li>

</ul>

<p>llvm-gcc4 is far more stable and produces better code than llvm-gcc3, but
does not currently support Link-Time-Optimization or C++ Exception Handling,
which llvm-gcc3 does.</p>

</div>

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

<div class="doc_text">

<ul>

<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>used</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>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>used</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>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.org/PR56">Zero arg vararg functions are not 
supported</a>.  This should not affect LLVM produced by the C or C++ 
frontends.</li>

<li>The C backend does not correctly implement the <a 
href="LangRef.html#i_stacksave"><tt>llvm.stacksave</tt></a> or
<a href="LangRef.html#i_stackrestore"><tt>llvm.stackrestore</tt></a> 
intrinsics.  This means that some code compiled by it can run out of stack
space if they depend on these (e.g. C99 varargs).</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>none yet.</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><a href="http://llvm.org/PR642">PowerPC backend does not correctly
implement ordered FP comparisons</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>

</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.org/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="sparc-be">Known problems with the SPARC back-end</a>
</div>

<div class="doc_text">

<ul>
<li>The SPARC backend only supports the 32-bit SPARC ABI (-m32), it does not
    support the 64-bit SPARC ABI (-m64).</li>
</ul>

</div>

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

<div class="doc_text">

<ul>
<li>The ARM backend is currently in early development stages, it is not 
ready for production use.</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.org">LLVM web page</a>, including <a
href="http://llvm.org/docs/">documentation</a> and <a
href="http://llvm.org/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.org/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.org/">The LLVM Compiler Infrastructure</a><br>
  Last modified: $Date$
</address>

</body>
</html>
