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

<div class="doc_title">LLVM 2.0 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 2.0.  Here we describe the status of LLVM, including
major improvements from the previous release and any known problems.  All LLVM
releases may be downloaded from the <a href="http://llvm.org/releases/">LLVM
releases web site</a>.</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 a Subversion checkout 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 eleventh public release of the LLVM Compiler Infrastructure. 
Being the first major release since 1.0, this release is different in several
ways from our previous releases:</p>

<ol>
<li>We took this as an opportunity to
break backwards compatibility with the LLVM 1.x bytecode and .ll file format.
If you have LLVM 1.9 .ll files that you would like to upgrade to LLVM 2.x, we 
recommend the use of the stand alone <a href="#llvm-upgrade">llvm-upgrade</a>
tool (which is included with 2.0).  We intend to keep compatibility with .ll 
and .bc formats within the 2.x release series, like we did within the 1.x 
series.</li>
<li>There are several significant change to the LLVM IR and internal APIs, such
    as a major overhaul of the type system, the completely new bitcode file
    format, etc (described below).</li>
<li>We designed the release around a 6 month release cycle instead of the usual
    3-month cycle.  This gave us extra time to develop and test some of the
    more invasive features in this release.</li>
<li>LLVM 2.0 no longer supports the llvm-gcc3 front-end.  Users are required to
    upgrade to llvm-gcc4.  llvm-gcc4 includes many features over
    llvm-gcc3, is faster, and is <a href="CFEBuildInstrs.html">much easier to
    build from source</a>.</li>
</ol>

<p>Note that while this is a major version bump, this release has been
   extensively tested on a wide range of software.  It is easy to say that this
   is our best release yet, in terms of both features and correctness.  This is
   the first LLVM release to correctly compile and optimize major software like
   LLVM itself, Mozilla/Seamonkey, Qt 4.3rc1, kOffice, etc out of the box on
   linux/x86.
   </p>

</div>

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

<!--_________________________________________________________________________-->
<div class="doc_subsubsection"><a name="majorchanges">Major Changes</a></div>
<div class="doc_text">

<p>Changes to the LLVM IR itself:</p>

<ul>

<li>Integer types are now completely signless. This means that we
    have types like i8/i16/i32 instead of ubyte/sbyte/short/ushort/int
    etc. LLVM operations that depend on sign have been split up into 
    separate instructions (<a href="http://llvm.org/PR950">PR950</a>).  This
    eliminates cast instructions that just change the sign of the operands (e.g.
    int -> uint), which reduces the size of the IR and makes optimizers
    simpler to write.</li>

<li>Integer types with arbitrary bitwidths (e.g. i13, i36, i42, i1057, etc) are
    now supported in the LLVM IR and optimizations (<a 
    href="http://llvm.org/PR1043">PR1043</a>).  However, neither llvm-gcc
    (<a href="http://llvm.org/PR1284">PR1284</a>) nor the native code generators
    (<a href="http://llvm.org/PR1270">PR1270</a>) support non-standard width
    integers yet.</li>

<li>'Type planes' have been removed (<a href="http://llvm.org/PR411">PR411</a>).
    It is no longer possible to have two values with the same name in the 
    same symbol table.  This simplifies LLVM internals, allowing significant 
    speedups.</li>

<li>Global variables and functions in .ll files are now prefixed with
    @ instead of % (<a href="http://llvm.org/PR645">PR645</a>).</li>

<li>The LLVM 1.x "bytecode" format has been replaced with a  
    completely new binary representation, named 'bitcode'. The <a
    href="BitCodeFormat.html">Bitcode Format</a> brings a
    number of advantages to the LLVM over the old bytecode format: it is denser  
    (files are smaller), more extensible, requires less memory to read,  
    is easier to keep backwards compatible (so LLVM 2.5 will read 2.0 .bc  
    files), and has many other nice features.</li>

<li>Load and store instructions now track the alignment of their pointer
    (<a href="http://www.llvm.org/PR400">PR400</a>).  This allows the IR to
    express loads that are not sufficiently aligned (e.g. due to '<tt>#pragma
    packed</tt>') or to capture extra alignment information.</li>
</ul>

<p>Major new features:</p>

<ul>

<li>A number of ELF features are now supported by LLVM, including 'visibility',
    extern weak linkage, Thread Local Storage (TLS) with the <tt>__thread</tt>
    keyword, and symbol aliases.
    Among other things, this means that many of the special options needed to
    configure llvm-gcc on linux are no longer needed, and special hacks to build
    large C++ libraries like Qt are not needed.</li>

<li>LLVM now has a new MSIL backend. <tt>llc -march=msil</tt> will now turn LLVM
    into MSIL (".net") bytecode.  This is still fairly early development 
    with a number of limitations.</li>

<li>A new <a href="CommandGuide/html/llvm-upgrade.html">llvm-upgrade</a> tool 
    exists to migrates LLVM 1.9 .ll files to LLVM 2.0 syntax.</li>
</ul>

</div>


<!--_________________________________________________________________________-->
<div class="doc_subsubsection"><a name="llvmgccfeatures">llvm-gcc
Improvements</a></div>
<div class="doc_text">
<p>New features include:
</p>

<ul>
<li>Precompiled Headers (PCH) are now supported.</li>

<li>"<tt>#pragma packed</tt>" is now supported, as are the various features
    described above (visibility, extern weak linkage, __thread, aliases,
    etc).</li>

<li>Tracking function parameter/result attributes is now possible.</li>

<li>Many internal enhancements have been added, such as improvements to
    NON_LVALUE_EXPR, arrays with non-zero base, structs with variable sized
    fields, VIEW_CONVERT_EXPR, CEIL_DIV_EXPR, nested functions, and many other
    things.  This is primarily to supports non-C GCC front-ends, like Ada.</li>

<li>It is simpler to configure llvm-gcc for linux.</li>

</ul>
  
</div>

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

<div class="doc_text">
<p>New features include:
</p>

<ul>
<li>The <a href="WritingAnLLVMPass.html">pass manager</a> has been entirely
    rewritten, making it significantly smaller, simpler, and more extensible.
    Support has been added to run <tt>FunctionPass</tt>es interlaced with
    <tt>CallGraphSCCPass</tt>es, we now support loop transformations
    explicitly with <tt>LoopPass</tt>, and <tt>ModulePass</tt>es may now use the
    result of <tt>FunctionPass</tt>es.</li>

<li>LLVM 2.0 includes a new loop rotation pass, which converts "for loops" into 
    "do/while loops", where the condition is at the bottom of the loop.</li>

<li>The Loop Strength Reduction pass has been improved, and we now support
    sinking expressions across blocks to reduce register pressure.</li>

<li>The <tt>-scalarrepl</tt> pass can now promote unions containing FP values
    into a register, it can also handle unions of vectors of the same
    size.</li>

<li>The [Post]DominatorSet classes have been removed from LLVM and clients
    switched to use the more-efficient ETForest class instead.</li>

<li>The ImmediateDominator class has also been removed, and clients have been
    switched to use DominatorTree instead.</li>

<li>The predicate simplifier pass has been improved, making it able to do 
    simple value range propagation and eliminate more conditionals.  However,
    note that predsimplify is not enabled by default in llvm-gcc.</li>

</ul>
  
</div>

<!--_________________________________________________________________________-->
<div class="doc_subsubsection"><a name="codegen">Code
Generator Enhancements</a></div>

<div class="doc_text">
<p>
New features include:
</p>

<ul>

<li>LLVM now supports software floating point, which allows LLVM to target
    chips that don't have hardware FPUs (e.g. ARM thumb mode).</li>

<li>A new register scavenger has been implemented, which is useful for
    finding free registers after register allocation.  This is useful when
    rewriting frame references on RISC targets, for example.</li>

<li>Heuristics have been added to avoid coalescing vregs with very large live 
    ranges to physregs.  This was bad because it effectively pinned the physical
    register for the entire lifetime of the virtual register (<a 
    href="http://llvm.org/PR711">PR711</a>).</li>

<li>Support now exists for very simple (but still very useful) 
    rematerialization the register allocator, enough to move  
    instructions like "load immediate" and constant pool loads.</li>

<li>Switch statement lowering is significantly better, improving codegen for 
    sparse switches that have dense subregions, and implemented support 
    for the shift/and trick.</li>

<li>LLVM now supports tracking physreg sub-registers and super-registers 
    in the code generator, and includes extensive register
    allocator changes to track them.</li>

<li>There is initial support for virtreg sub-registers 
    (<a href="http://llvm.org/PR1350">PR1350</a>).</li>

</ul>

<p>
Other improvements include:
</p>

<ul>

<li>Inline assembly support is much more solid that before.
    The two primary features still missing are support for 80-bit floating point
    stack registers on X86 (<a href="http://llvm.org/PR879">PR879</a>), and
    support for inline asm in the C backend (<a 
    href="http://llvm.org/PR802">PR802</a>).</li>

<li>DWARF debug information generation has been improved.  LLVM now passes 
    most of the GDB testsuite on MacOS and debug info is more dense.</li>

<li>Codegen support for Zero-cost DWARF exception handling has been added (<a 
    href="http://llvm.org/PR592">PR592</a>).  It is mostly
    complete and just in need of continued bug fixes and optimizations at 
    this point.  However, support in llvm-g++ is disabled with an
    #ifdef for the 2.0 release  (<a 
    href="http://llvm.org/PR870">PR870</a>).</li>

<li>The code generator now has more accurate and general hooks for  
    describing addressing modes ("isLegalAddressingMode") to  
    optimizations like loop strength reduction and code sinking.</li>

<li>Progress has been made on a direct Mach-o .o file writer. Many small 
    apps work, but it is still not quite complete.</li>

</ul>

<p>In addition, the LLVM target description format has itself been extended in
 several ways:</p>
 
<ul>
<li>TargetData now supports better target parameterization in
    the .ll/.bc files, eliminating the 'pointersize/endianness' attributes
    in the files (<a href="http://llvm.org/PR761">PR761</a>).</li>

<li>TargetData was generalized for finer grained alignment handling,
    handling of vector alignment, and handling of preferred alignment</li>

<li>LLVM now supports describing target calling conventions  
    explicitly in .td files, reducing the amount of C++ code that needs  
    to be written for a port.</li>

</ul>

</div>

<!--_________________________________________________________________________-->
<div class="doc_subsubsection"><a name="specifictargets">Target-Specific
Improvements</a></div>

<div class="doc_text">

<p>X86-specific Code Generator Enhancements:
</p>

<ul>
<li>The MMX instruction set is now supported through intrinsics.</li>
<li>The scheduler was improved to better reduce register pressure on  
    X86 and other targets that are register pressure sensitive.</li>
<li>Linux/x86-64 support is much better.</li>
<li>PIC support for linux/x86 has been added.</li>
<li>The X86 backend now supports the GCC regparm attribute.</li>
<li>LLVM now supports inline asm with multiple constraint letters per operand 
    (like "mri") which is common in X86 inline asms.</li>
</ul>

<p>ARM-specific Code Generator Enhancements:</p>

<ul>
<li>The ARM code generator is now stable and fully supported.</li>

<li>There are major new features, including support for ARM 
    v4-v6 chips, vfp support, soft float point support, pre/postinc support,
    load/store multiple generation, constant pool entry motion (to support
    large functions), inline asm support, weak linkage support, static
    ctor/dtor support and many bug fixes.</li>
    
<li>Added support for Thumb code generation (<tt>llc -march=thumb</tt>).</li>

<li>The ARM backend now supports the ARM AAPCS/EABI ABI and PIC codegen on 
    arm/linux.</li>

<li>Several bugs were fixed for DWARF debug info generation on arm/linux.</li>

</ul>

<p>PowerPC-specific Code Generator Enhancements:</p>

<ul>
<li>The PowerPC 64 JIT now supports addressing code loaded above the 2G
     boundary.</li>

<li>Improved support for the Linux/ppc ABI and the linux/ppc JIT is fully 
    functional now.  llvm-gcc and static compilation are not fully supported 
    yet though.</li>

<li>Many PowerPC 64 bug fixes.</li>

</ul>

</div>


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

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

<ul>
<li>LLVM no longer relies on static destructors to shut itself down.  Instead,
    it lazily initializes itself and shuts down when <tt>llvm_shutdown()</tt> is 
    explicitly called.</li>

<li>LLVM now has significantly fewer static constructors, reducing startup time.
    </li>

<li>Several classes have been refactored to reduce the amount of code that
    gets linked into apps that use the JIT.</li>

<li>Construction of intrinsic function declarations has been simplified.</li>

<li>The gccas/gccld tools have been replaced with small shell scripts.</li>

<li>Support has been added to llvm-test for running on low-memory  
    or slow machines (make SMALL_PROBLEM_SIZE=1).</li>

</ul>
</div>

<!--_________________________________________________________________________-->
<div class="doc_subsubsection"><a name="apichanges">API Changes</a></div>
<div class="doc_text">

<p>LLVM 2.0 contains a revamp of the type system and several other significant
internal changes.  If you are programming to the C++ API, be aware of the
following major changes:</p>

<ul>
<li>Pass registration is slightly different in LLVM 2.0 (you now need an
   <tt>intptr_t</tt> in your constructor), as explained in the <a 
   href="WritingAnLLVMPass.html#basiccode">Writing an LLVM Pass</a>
   document.</li>
   
<li><tt>ConstantBool</tt>, <tt>ConstantIntegral</tt> and <tt>ConstantInt</tt>
    classes have been merged together, we now just have
    <tt>ConstantInt</tt>.</li>

<li><tt>Type::IntTy</tt>, <tt>Type::UIntTy</tt>, <tt>Type::SByteTy</tt>, ... are
    replaced by <tt>Type::Int8Ty</tt>, <tt>Type::Int16Ty</tt>, etc.  LLVM types
    have always corresponded to fixed size types
    (e.g. long was always 64-bits), but the type system no longer includes
    information about the sign of the type.  Also, the
    <tt>Type::isPrimitiveType()</tt> method now returns false for integers.</li>

<li>Several classes (<tt>CallInst</tt>, <tt>GetElementPtrInst</tt>,
    <tt>ConstantArray</tt>, etc), that once took <tt>std::vector</tt> as
     arguments now take ranges instead.   For example, you can create a
    <tt>GetElementPtrInst</tt> with code like:
    
    <pre>
      Value *Ops[] = { Op1, Op2, Op3 };
      GEP = new GetElementPtrInst(BasePtr, Ops, 3);
    </pre>
    
    This avoids creation of a temporary vector (and a call to malloc/free).  If
    you have an <tt>std::vector</tt>, use code like this:
    <pre>
      std::vector&lt;Value*&gt; Ops = ...;
      GEP = new GetElementPtrInst(BasePtr, &amp;Ops[0], Ops.size());
    </pre>

    </li>
    
<li><tt>CastInst</tt> is now abstract and its functionality is split into
    several parts, one for each of the <a href="LangRef.html#convertops">new
    cast instructions</a>.</li>

<li><tt>Instruction::getNext()/getPrev()</tt> are now private (along with
    <tt>BasicBlock::getNext</tt>, etc), for efficiency reasons (they are now no
    longer just simple pointers).  Please use <tt>BasicBlock::iterator</tt>, etc
    instead.
</li>

<li><tt>Module::getNamedFunction()</tt> is now called
    <tt>Module::getFunction()</tt>.</li>

<li><tt>SymbolTable.h</tt> has been split into <tt>ValueSymbolTable.h</tt> and 
<tt>TypeSymbolTable.h</tt>.</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>PowerPC and X86-based Mac OS X systems, running 10.2 and above in 32-bit and
    64-bit modes.</li>
<li>Intel and AMD machines running on Win32 using MinGW libraries (native)</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>Sun UltraSPARC workstations running Solaris 8.</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>C++ EH support is disabled for this release.</li>
<li>The MSIL backend is experimental.</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="x86-be">Known problems with the X86 back-end</a>
</div>

<div class="doc_text">

<ul>
<li>The X86 backend does not yet support <a href="http://llvm.org/PR879">inline
    assembly that uses the X86 floating point stack</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><a href="http://llvm.org/PR642">PowerPC backend does not correctly
implement ordered FP comparisons</a>.</li>
<li>The Linux PPC32/ABI support needs testing for the interpreter and static
compilation, and lacks support for debug information.</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>Thumb mode works only on ARMv6 or higher processors. On sub-ARMv6
processors, thumb program can crash or produces wrong
results (<a href="http://llvm.org/PR1388">PR1388</a>).</li>
<li>Compilation for ARM Linux OABI (old ABI) is supported, but not fully tested.
</li>
<li>There is a bug in QEMU-ARM (<= 0.9.0) which causes it to incorrectly execute
programs compiled with LLVM.  Please use more recent versions of QEMU.</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="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>

<li>The Itanium backend has bitrotted somewhat.</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><a href="http://llvm.org/PR802">The C backend does not support inline
    assembly code</a>.</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-gcc4 does not currently support <a href="http://llvm.org/PR869">Link-Time 
Optimization</a> on most platforms "out-of-the-box".  Please inquire on the 
llvmdev mailing list if you are interested.</p>

</div>

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

<div class="doc_text">
<ul>

<li><p>"long double" is silently 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.</p></li>
    
<li><p>llvm-gcc does <b>not</b> support <tt>__builtin_apply</tt> yet.
  See <a href="http://gcc.gnu.org/onlinedocs/gcc/Constructing-Calls.html#Constructing%20Calls">Constructing Calls</a>: Dispatching a call to another function.</p>
</li>

<li><p>llvm-gcc <b>partially</b> supports these GCC extensions:</p>
  <ol>
  <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.<br>
      Nested functions are supported, but llvm-gcc does not support non-local
      gotos or taking the address of a nested function.</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>alias</tt>, <tt>always_inline</tt>, <tt>cdecl</tt>,
      <tt>constructor</tt>, <tt>destructor</tt>,
      <tt>deprecated</tt>, <tt>fastcall</tt>, <tt>format</tt>, 
      <tt>format_arg</tt>, <tt>non_null</tt>, <tt>noreturn</tt>, <tt>regparm</tt>
      <tt>section</tt>, <tt>stdcall</tt>, <tt>unused</tt>, <tt>used</tt>, 
      <tt>visibility</tt>, <tt>warn_unused_result</tt>, <tt>weak</tt><br>

      <b>Ignored:</b> <tt>noinline</tt>, <tt>pure</tt>, <tt>const</tt>, <tt>nothrow</tt>,
      <tt>malloc</tt>, <tt>no_instrument_function</tt></li>
  </ol>
</li>

<li><p>llvm-gcc supports the vast majority of GCC extensions, including:</p>

  <ol>
  <li><a href="http://gcc.gnu.org/onlinedocs/gcc/Pragmas.html#Pragmas">Pragmas</a>: Pragmas accepted by GCC.</li>
  <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/Other-Builtins.html#Other%20Builtins">Other Builtins</a>:
      Other built-in functions.</li>
  <li><a href="http://gcc.gnu.org/onlinedocs/gcc/Variable-Attributes.html#Variable%20Attributes">Variable Attributes</a>:
      Specifying attributes of variables.</li>
  <li><a href="http://gcc.gnu.org/onlinedocs/gcc/Type-Attributes.html#Type%20Attributes">Type Attributes</a>:	Specifying attributes of types.</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/Variable-Length.html#Variable%20Length">Variable Length</a>:
      Arrays whose length is computed at run time.</li>
  <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/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/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>The C++ front-end is considered to be fully
tested and works for a number of non-trivial programs, including LLVM
itself, Qt, Mozilla, etc.</p>

<ul>
<li>llvm-gcc4 only has partial support for <a href="http://llvm.org/PR870">C++ 
Exception Handling</a>, and it is not enabled by default.</li>

<!-- NO EH Support!

<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-gcc3 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_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>, in particular in the <a
href="http://llvm.org/docs/">documentation</a> section.  The web page also
contains versions of the API documentation which is up-to-date with the
Subversion 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/">LLVM Compiler Infrastructure</a><br>
  Last modified: $Date$
</address>

</body>
</html>
