<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><title>LLVM 1.1 Release Notes</title></head>
<body bgcolor=white>

<table width="100%" bgcolor="#330077" border=0 cellpadding=4 cellspacing=0>
<tr><td>&nbsp; <font size=+3 color="#EEEEFF" face="Georgia,Palatino,Times,Roman"><b>LLVM 1.1 Release Notes</b></font></td>
</tr></table>
 
<ol>
  <li><a href="#intro">Introduction</a>
  <li><a href="#whatsnew">What's New?</a>
  <li><a href="#portability">Portability and Supported Platforms</a>
  <li><a href="#install-instructions">Installation Instructions</a>
  <li><a href="#knownproblems">Known Problems</a>
  <ul>
<!--    <li><a href="#portabilityprobs">Portability Problems</a> -->
    <li><a href="#core">Known problems with the LLVM Core</a>
    <li><a href="#c-fe">Known problems with the C Front-end</a>
    <li><a href="#c++-fe">Known problems with the C++ Front-end</a>
    <li><a href="#x86-be">Known problems with the X86 Back-end</a>
    <li><a href="#sparc-be">Known problems with the Sparc Back-end</a>
    <li><a href="#c-be">Known problems with the C back-end</a>
  </ul>
  <li><a href="#additionalinfo">Additional Information</a>
  </ul>

  <p><b>Written by <a href="mailto:sabre@nondot.org">Chris Lattner</a></b><p>
</ol>


<!-- *********************************************************************** -->
<table width="100%" bgcolor="#330077" border=0 cellpadding=4 cellspacing=0>
<tr><td align=center><font color="#EEEEFF" size=+2 face="Georgia,Palatino"><b>
<a name="intro">Introduction
</b></font></td></tr></table><ul>
<!-- *********************************************************************** -->

This document contains the release notes for the LLVM compiler infrastructure,
release 1.1.  Here we describe the status of LLVM, including any known problems,
and bug fixes from the previous release.  The most up-to-date version of this
document can be found on the <a
href="http://llvm.cs.uiuc.edu/releases/1.1/">LLVM 1.1 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>

For more information about LLVM, including information about potentially more
current releases, please check out the <a href="http://llvm.cs.uiuc.edu">main
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>

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

<!-- *********************************************************************** -->
</ul><table width="100%" bgcolor="#330077" border=0 cellpadding=4 cellspacing=0>
<tr><td align=center><font color="#EEEEFF" size=+2 face="Georgia,Palatino"><b>
<a name="whatsnew">What's New?
</b></font></td></tr></table><ul>
<!-- *********************************************************************** -->

This is the second public release of the LLVM compiler infrastructure.  This
release implements the following new features:<p>

<ol>
<li>temp</li>
<li>temp</li>
<li>temp</li>
</ol><p>

In this release, the following Quality of Implementation issues were fixed:<p>

<ol>
<li><a href="http://llvm.cs.uiuc.edu/PR29">C++ front-end is not generating linkonce linkage type when it can</a></li>
</ol><p>

In this release, the following bugs in the previous release were fixed:<p>

<ol>
<li><a href="http://llvm.cs.uiuc.edu/PR57">[inliner] Inlining invoke with PHI in unwind target is broken</a></li>
<li><a href="http://llvm.cs.uiuc.edu/PR58">[linker] linkonce globals should link successfully to external globals</a></li>
<li><a href="http://llvm.cs.uiuc.edu/PR59">C++ frontend can crash when compiling virtual base classes</a></li>
<li><a href="http://llvm.cs.uiuc.edu/PR62">C backend fails on constant cast expr to ptr-to-anonymous struct</a></li>
</ol><p>

At this time, LLVM is known to work properly with SPEC CPU 2000, the Olden
benchmarks, and the Ptrdist benchmarks among many other programs.  Note however
that the Sparc and X86 backends do not currently support exception throwing or
long jumping (including 253.perlbmk in SPEC).  For these programs you must use
the C backend.<p>


<!-- *********************************************************************** -->
</ul><table width="100%" bgcolor="#330077" border=0 cellpadding=4 cellspacing=0>
<tr><td align=center><font color="#EEEEFF" size=+2 face="Georgia,Palatino"><b>
<a name="portability">Portability and Supported Platforms
</b></font></td></tr></table><ul>
<!-- *********************************************************************** -->

LLVM has only been extensively tested on Intel and AMD machines running Red
Hat Linux, and Sun UltraSPARC workstations running Solaris 8.
The core LLVM infrastructure uses "autoconf" for portability, so hopefully we
work on more platforms than that.  However, it is extremely likely that we
missed something.  We welcome portability patches and error messages.<p>


<!-- *********************************************************************** -->
</ul><table width="100%" bgcolor="#330077" border=0 cellpadding=4 cellspacing=0>
<tr><td align=center><font color="#EEEEFF" size=+2 face="Georgia,Palatino"><b>
<a name="knownproblems">Known Problems
</b></font></td></tr></table><ul>
<!-- *********************************************************************** -->

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.


<!-- _______________________________________________________________________ -->
<!--
</ul><h4><a name="portability"><hr size=0>Portability Problems</h4><ul>
-->


<!-- _______________________________________________________________________ -->
</ul><h4><a name="core"><hr size=0>Known problems with the LLVM Core</h4><ul>

<li>In the JIT, <tt>dlsym</tt> on a symbol compiled by the JIT will not work.<p>

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

<li>It is not possible to <tt>dlopen</tt> an LLVM bytecode file in the JIT.<p>

<li>Linking in static archive files (.a files) is very slow (there is no symbol
table in the archive).

<!-- _______________________________________________________________________ -->
</ul><h4><a name="c-fe"><hr size=0>Known problems with the C front-end</h4><ul>

</ul><b>Bugs:</b><ul><p>

<li><a href="http://llvm.cs.uiuc.edu/PR6">Oversized integer bitfields cause crash</a>.<p>

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

</ul><b>Notes:</b><ul><p>

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

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

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

<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><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><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><a href="http://gcc.gnu.org/onlinedocs/gcc/Constructing-Calls.html#Constructing%20Calls">Constructing Calls</a>: 	Dispatching a call to another function. 
  <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><a href="http://gcc.gnu.org/onlinedocs/gcc/Constraints.html#Constraints">Constraints</a>:  Constraints for asm operands
  <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><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><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><a href="http://gcc.gnu.org/onlinedocs/gcc/Vector-Extensions.html#Vector%20Extensions">Vector Extensions</a>: Using vector instructions through built-in functions. 
  <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><a href="http://gcc.gnu.org/onlinedocs/gcc/Thread-Local.html#Thread-Local">Thread-Local</a>: Per-thread variables. 
  <li><a href="http://gcc.gnu.org/onlinedocs/gcc/Pragmas.html#Pragmas">Pragmas</a>: Pragmas accepted by GCC. 
  </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, which 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><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>constructor</tt>, <tt>destructor</tt>, <tt>unused</tt>, <tt>deprecated</tt>,
                 <tt>warn_unused_result</tt>, <tt>weak</tt><br>
      <b>Ignored:</b> <tt>noreturn</tt>, <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><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.<br>

  <li><a href="http://gcc.gnu.org/onlinedocs/gcc/Type-Attributes.html#Type%20Attributes">Type Attributes</a>: 	Specifying attributes of types. 
      <b>Supported:</b> <tt>transparent_union</tt>, <tt>unused</tt>,
                        <tt>deprecated</tt>, <tt>may_alias</tt>
      <b>Unsupported:</b> <tt>aligned</tt>, <tt>packed</tt>
                        all target specific attributes.<br>
  <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> (ignored).
  </ol><p>


  The following extensions <b>are</b> known to be supported:
  <ol>
  <li><a href="http://gcc.gnu.org/onlinedocs/gcc/Statement-Exprs.html#Statement%20Exprs">Statement Exprs</a>:   Putting statements and declarations inside expressions. 
  <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><a href="http://gcc.gnu.org/onlinedocs/gcc/Lvalues.html#Lvalues">Lvalues</a>:   Using <code>?:</code>, "<code>,</code>" and casts in lvalues. 
  <li><a href="http://gcc.gnu.org/onlinedocs/gcc/Conditionals.html#Conditionals">Conditionals</a>: Omitting the middle operand of a <code>?:</code> expression. 
  <li><a href="http://gcc.gnu.org/onlinedocs/gcc/Long-Long.html#Long%20Long">Long Long</a>: Double-word integers.
  <li><a href="http://gcc.gnu.org/onlinedocs/gcc/Complex.html#Complex">Complex</a>:   Data types for complex numbers. 
  <li><a href="http://gcc.gnu.org/onlinedocs/gcc/Hex-Floats.html#Hex%20Floats">Hex Floats</a>:Hexadecimal floating-point constants. 
  <li><a href="http://gcc.gnu.org/onlinedocs/gcc/Zero-Length.html#Zero%20Length">Zero Length</a>:  Zero-length arrays. 
  <li><a href="http://gcc.gnu.org/onlinedocs/gcc/Empty-Structures.html#Empty%20Structures">Empty Structures</a>:  Structures with no members. 
  <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><a href="http://gcc.gnu.org/onlinedocs/gcc/Escaped-Newlines.html#Escaped%20Newlines">Escaped Newlines</a>:  Slightly looser rules for escaped newlines. 
  <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><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><a href="http://gcc.gnu.org/onlinedocs/gcc/Initializers.html#Initializers">Initializers</a>: Non-constant initializers. 
  <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><a href="http://gcc.gnu.org/onlinedocs/gcc/Designated-Inits.html#Designated%20Inits">Designated Inits</a>: Labeling elements of initializers. 

  <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><a href="http://gcc.gnu.org/onlinedocs/gcc/Case-Ranges.html#Case%20Ranges">Case Ranges</a>: `case 1 ... 9' and such. 
  <li><a href="http://gcc.gnu.org/onlinedocs/gcc/Mixed-Declarations.html#Mixed%20Declarations">Mixed Declarations</a>: 	Mixing declarations and code. 

  <li><a href="http://gcc.gnu.org/onlinedocs/gcc/Function-Prototypes.html#Function%20Prototypes">Function Prototypes</a>:  Prototype declarations and old-style definitions. 
  <li><a href="http://gcc.gnu.org/onlinedocs/gcc/C---Comments.html#C++%20Comments">C++ Comments</a>: C++ comments are recognized. 
  <li><a href="http://gcc.gnu.org/onlinedocs/gcc/Dollar-Signs.html#Dollar%20Signs">Dollar Signs</a>: Dollar sign is allowed in identifiers. 
  <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><a href="http://gcc.gnu.org/onlinedocs/gcc/Alignment.html#Alignment">Alignment</a>: Inquiring about the alignment of a type or variable. 
  <li><a href="http://gcc.gnu.org/onlinedocs/gcc/Inline.html#Inline">Inline</a>: Defining inline functions (as fast as macros). 
  <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><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><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><a href="http://gcc.gnu.org/onlinedocs/gcc/Unnamed-Fields.html#Unnamed%20Fields">Unnamed Fields</a>: Unnamed struct/union fields within structs/unions.
  <li><a href="http://gcc.gnu.org/onlinedocs/gcc/Attribute-Syntax.html#Attribute%20Syntax">Attribute Syntax</a>:  Formal syntax for attributes. 
  </ol><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).


<!-- _______________________________________________________________________ -->
</ul><h4><a name="c++-fe"><hr size=0>Known problems with the C++ front-end</h4><ul>

For this release, the C++ front-end is considered to be fully functional but
of <b>beta</b> quality.  It has been tested and works for a number of simple programs that collectively exercise most of the language.  Nevertheless, it has not been in use as long as the C front-end.  Please report any bugs or problems.<p>

</ul><b>Bugs</b>:<ul><p>

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

</ul><b>Notes</b>:<ul><p>

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

<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).<p> 

<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><a href="http://llvm.cs.uiuc.edu/PR11">Code for executing destructors when
    unwinding is not shared</a> (this is a quality of implementation problem,
    which does not effect functionality).<p>


<!-- _______________________________________________________________________ -->
</ul><h4><a name="x86-be"><hr size=0>Known problems with the X86 back-end</h4><ul>

<li>The X86 code generator <a
href="http://llvm.cs.uiuc.edu/PR16">does not currently
support the <tt>unwind</tt> instruction</a>, so code that throws a C++ exception
or calls the C <tt>longjmp</tt> function will abort.<p>


<!-- _______________________________________________________________________ -->
</ul><h4><a name="sparc-be"><hr size=0>Known problems with the Sparc back-end</h4><ul>

<li>The Sparc code generator <a
href="http://llvm.cs.uiuc.edu/PR15">does not currently
support the <tt>unwind</tt> instruction</a>, so code that throws a C++ exception
or calls the C <tt>longjmp</tt> function will abort.<p>


<!-- _______________________________________________________________________ -->
</ul><h4><a name="c-be"><hr size=0>Known problems with the C back-end</h4><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.<p>

<li><a href="http://llvm.cs.uiuc.edu/PR33">Initializers for global variables</a>
cannot include special floating point numbers like Not-A-Number or Infinity.<p>

<li><a href="http://zion.cs.uiuc.edu/PR56">Zero arg vararg functions are not 
supported</a>.  This should not affect LLVM produced by the C or C++ 
frontends.<p>

<li>The code produces by the C back-end has only been tested with the Sun CC and
GCC compilers.  It is possible that it will have to be adjusted to support other
C compilers.<p>



<!-- *********************************************************************** -->
</ul><table width="100%" bgcolor="#330077" border=0 cellpadding=4 cellspacing=0>
<tr><td align=center><font color="#EEEEFF" size=+2 face="Georgia,Palatino"><b>
<a name="additionalinfo">Additional Information
</b></font></td></tr></table><ul>
<!-- *********************************************************************** -->

A wide variety of additional information is available on the LLVM web page,
including mailing lists publications describing algorithms and components
implemented in LLVM.  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>

If you have any questions or comments about LLVM, please feel free to contact us
via the mailing lists.<p>


<!-- *********************************************************************** -->
</ul>
<!-- *********************************************************************** -->

<hr><font size-1>

Maintained By: <a href="http://llvm.cs.uiuc.edu/">The LLVM Team</a><br>
<!-- Created: Wed Oct  1 17:38:54 CDT 2003 -->
<!-- hhmts start -->
Last modified: Tue Oct 28 17:11:57 CST 2003
<!-- hhmts end -->
</body></html>
