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

<h1>LLVM 3.0 Release Notes</h1>

<img align=right src="http://llvm.org/img/DragonSmall.png"
    width="136" height="136" alt="LLVM Dragon Logo">

<ol>
  <li><a href="#intro">Introduction</a></li>
  <li><a href="#subproj">Sub-project Status Update</a></li>
  <li><a href="#externalproj">External Projects Using LLVM 3.0</a></li>
  <li><a href="#whatsnew">What's New in LLVM 3.0?</a></li>
  <li><a href="GettingStarted.html">Installation Instructions</a></li>
  <li><a href="#knownproblems">Known Problems</a></li>
  <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>

<!--
<h1 style="color:red">These are in-progress notes for the upcoming LLVM 3.0
release.<br>
You may prefer the
<a href="http://llvm.org/releases/2.9/docs/ReleaseNotes.html">LLVM 2.9
Release Notes</a>.</h1>
 -->

<!-- *********************************************************************** -->
<h2>
  <a name="intro">Introduction</a>
</h2>
<!-- *********************************************************************** -->

<div>

<p>This document contains the release notes for the LLVM Compiler
   Infrastructure, release 3.0.  Here we describe the status of LLVM, including
   major improvements from the previous release and significant 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://lists.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 a specific release, please see the
   <a href="http://llvm.org/releases/">releases page</a>.</p>

</div>
   
<!-- Features that need text if they're finished for 3.1:
  ARM EHABI
  combiner-aa?
  strong phi elim
  loop dependence analysis
  CorrelatedValuePropagation
  lib/Transforms/IPO/MergeFunctions.cpp => consider for 3.1.
 -->
 
<!-- *********************************************************************** -->
<h2>
  <a name="subproj">Sub-project Status Update</a>
</h2>
<!-- *********************************************************************** -->

<div>

<p>The LLVM 3.0 distribution currently consists of code from the core LLVM
   repository (which roughly includes the LLVM optimizers, code generators and
   supporting tools), the Clang repository and the llvm-gcc repository.  In
   addition to this code, the LLVM Project includes other sub-projects that are
   in development.  Here we include updates on these subprojects.</p>

<!--=========================================================================-->
<h3>
<a name="clang">Clang: C/C++/Objective-C Frontend Toolkit</a>
</h3>

<div>

<p><a href="http://clang.llvm.org/">Clang</a> is an LLVM front end for the C,
   C++, and Objective-C languages. Clang aims to provide a better user
   experience through expressive diagnostics, a high level of conformance to
   language standards, fast compilation, and low memory use. Like LLVM, Clang
   provides a modular, library-based architecture that makes it suitable for
   creating or integrating with other development tools. Clang is considered a
   production-quality compiler for C, Objective-C, C++ and Objective-C++ on x86
   (32- and 64-bit), and for darwin/arm targets.</p>

<p>In the LLVM 3.0 time-frame, the Clang team has made many improvements:</p>

<ul>
  <li>Greatly improved support for building C++ applications, with greater
      stability and better diagnostics.</li>
  
  <li><a href="http://clang.llvm.org/cxx_status.html">Improved support</a> for
      the <a href="http://www.iso.org/iso/iso_catalogue/catalogue_tc/catalogue_detail.htm?csnumber=50372">C++
      2011</a> standard, including implementations of non-static data member
      initializers, alias templates, delegating constructors, the range-based
      for loop, and implicitly-generated move constructors and move assignment
      operators, among others.</li>

  <li>Implemented support for some features of the upcoming C1x standard,
      including static assertions and generic selections.</li>
  
  <li>Better detection of include and linking paths for system headers and
      libraries, especially for Linux distributions.</li>

  <li>Implemented support
      for <a href="http://clang.llvm.org/docs/AutomaticReferenceCounting.html">Automatic
      Reference Counting</a> for Objective-C.</li>

  <li>Implemented a number of optimizations in <tt>libclang</tt>, the Clang C
      interface, to improve the performance of code completion and the mapping
      from source locations to abstract syntax tree nodes.</li>
</ul>

  
<p>If Clang rejects your code but another compiler accepts it, please take a
   look at the <a href="http://clang.llvm.org/compatibility.html">language
   compatibility</a> guide to make sure this is not intentional or a known
   issue.</p>

</div>

<!--=========================================================================-->
<h3>
<a name="dragonegg">DragonEgg: GCC front-ends, LLVM back-end</a>
</h3>

<div>
<p><a href="http://dragonegg.llvm.org/">DragonEgg</a> is a
   <a href="http://gcc.gnu.org/wiki/plugins">gcc plugin</a> that replaces GCC's
   optimizers and code generators with LLVM's. Currently it requires a patched
   version of gcc-4.5.  The plugin can target the x86-32 and x86-64 processor
   families and has been used successfully on the Darwin, FreeBSD and Linux
   platforms.  The Ada, C, C++ and Fortran languages work well.  The plugin is
   capable of compiling plenty of Obj-C, Obj-C++ and Java but it is not known
   whether the compiled code actually works or not!</p>

<p>The 3.0 release has the following notable changes:</p>

<ul>
<!--
<li></li>
-->
</ul>

</div>

<!--=========================================================================-->
<h3>
<a name="compiler-rt">compiler-rt: Compiler Runtime Library</a>
</h3>

<div>

<p>The new LLVM <a href="http://compiler-rt.llvm.org/">compiler-rt project</a>
   is a simple library that provides an implementation of the low-level
   target-specific hooks required by code generation and other runtime
   components.  For example, when compiling for a 32-bit target, converting a
   double to a 64-bit unsigned integer is compiled into a runtime call to the
   "__fixunsdfdi" function. The compiler-rt library provides highly optimized
   implementations of this and other low-level routines (some are 3x faster than
   the equivalent libgcc routines).</p>

<p>In the LLVM 3.0 timeframe,</p>

</div>

<!--=========================================================================-->
<h3>
<a name="lldb">LLDB: Low Level Debugger</a>
</h3>

<div>

<p>LLDB has advanced by leaps and bounds in the 3.0 timeframe.  It is
   dramatically more stable and useful, and includes both a
   new <a href="http://lldb.llvm.org/tutorial.html">tutorial</a> and
   a <a href="http://lldb.llvm.org/lldb-gdb.html">side-by-side comparison with
   GDB</a>.</p>

</div>

<!--=========================================================================-->
<h3>
<a name="libc++">libc++: C++ Standard Library</a>
</h3>

<div>

<p>Like compiler_rt, libc++ is now <a href="DeveloperPolicy.html#license">dual
   licensed</a> under the MIT and UIUC license, allowing it to be used more
   permissively.</p>

</div>


<!--=========================================================================-->
<h3>
<a name="LLBrowse">LLBrowse: IR Browser</a>
</h3>

<div>

<p><a href="http://llvm.org/svn/llvm-project/llbrowse/trunk/doc/LLBrowse.html">
   LLBrowse</a> is an interactive viewer for LLVM modules. It can load any LLVM
   module and displays its contents as an expandable tree view, facilitating an
   easy way to inspect types, functions, global variables, or metadata nodes. It
   is fully cross-platform, being based on the popular wxWidgets GUI
   toolkit.</p>

</div>

<!--=========================================================================-->
<h3>
<a name="vmkit">VMKit</a>
</h3>

<div>

<p>The <a href="http://vmkit.llvm.org/">VMKit project</a> is an implementation
   of a Java Virtual Machine (Java VM or JVM) that uses LLVM for static and
   just-in-time compilation. As of LLVM 3.0, VMKit now supports generational
   garbage collectors. The garbage collectors are provided by the MMTk
   framework, and VMKit can be configured to use one of the numerous implemented
   collectors of MMTk.</p>

</div>
  
  
<!--=========================================================================-->
<!--
<h3>
<a name="klee">KLEE: A Symbolic Execution Virtual Machine</a>
</h3>

<div>
<p>
<a href="http://klee.llvm.org/">KLEE</a> is a symbolic execution framework for
programs in LLVM bitcode form. KLEE tries to symbolically evaluate "all" paths
through the application and records state transitions that lead to fault
states. This allows it to construct testcases that lead to faults and can even
be used to verify some algorithms.
</p>

<p>UPDATE!</p>
</div>-->

</div>

<!-- *********************************************************************** -->
<h2>
  <a name="externalproj">External Open Source Projects Using LLVM 3.0</a>
</h2>
<!-- *********************************************************************** -->

<div>

<p>An exciting aspect of LLVM is that it is used as an enabling technology for
   a lot of other language and tools projects.  This section lists some of the
   projects that have already been updated to work with LLVM 3.0.</p>

<!--=========================================================================-->
<h3>AddressSanitizer</h3>
  
<div>

<p><a href="http://code.google.com/p/address-sanitizer/">AddressSanitizer</a>
   uses compiler instrumentation and a specialized malloc library to find C/C++
   bugs such as use-after-free and out-of-bound accesses to heap, stack, and
   globals. The key feature of the tool is speed: the average slowdown
   introduced by AddressSanitizer is less than 2x.</p>

</div>

<!--=========================================================================-->
<h3>ClamAV</h3>
  
<div>

<p><a href="http://www.clamav.net">Clam AntiVirus</a> is an open source (GPL)
   anti-virus toolkit for UNIX, designed especially for e-mail scanning on mail
   gateways.</p>

<p>Since version 0.96 it
   has <a href="http://vrt-sourcefire.blogspot.com/2010/09/introduction-to-clamavs-low-level.html">bytecode
   signatures</a> that allow writing detections for complex malware.</p>

<p>It uses LLVM's JIT to speed up the execution of bytecode on X86, X86-64,
   PPC32/64, falling back to its own interpreter otherwise.  The git version was
   updated to work with LLVM 3.0.</p>

</div>

<!--=========================================================================-->
<h3>clReflect</h3>

<div>

<p><a href="https://bitbucket.org/dwilliamson/clreflect">clReflect</a> is a C++
   parser that uses clang/LLVM to derive a light-weight reflection database
   suitable for use in game development. It comes with a very simple runtime
   library for loading and querying the database, requiring no external
   dependencies (including CRT), and an additional utility library for object
   management and serialisation.</p>

</div>

<!--=========================================================================-->
<h3>Cling C++ Interpreter</h3>

<div>

<p><a href="http://cern.ch/cling">Cling</a> is an interactive compiler interface
   (aka C++ interpreter). It uses LLVM's JIT and clang; it currently supports
   C++ and C. It has a prompt interface, runs source files, calls into shared
   libraries, prints the value of expressions, even does runtime lookup of
   identifiers (dynamic scopes). And it just behaves like one would expect from
   an interpreter.</p>

</div>

<!--=========================================================================-->
<!-- FIXME: Comment out
<h3>Crack Programming Language</h3>

<div>
<p>
<a href="http://code.google.com/p/crack-language/">Crack</a> aims to provide the
ease of development of a scripting language with the performance of a compiled
language. The language derives concepts from C++, Java and Python, incorporating
object-oriented programming, operator overloading and strong typing.</p>
</div>
-->  
  
<!--=========================================================================-->
<h3>Glasgow Haskell Compiler (GHC)</h3>
  
<div>

<p>GHC is an open source, state-of-the-art programming suite for Haskell, a
   standard lazy functional programming language. It includes an optimizing
   static compiler generating good code for a variety of platforms, together
   with an interactive system for convenient, quick development.</p>

<p>GHC 7.0 and onwards include an LLVM code generator, supporting LLVM 2.8 and
   later. Since LLVM 2.9, GHC now includes experimental support for the ARM
   platform with LLVM 3.0.</p>

</div>

<!--=========================================================================-->
<h3>gwXscript</h3>

<div>

<p><a href="http://botwars.tk/gwscript/">gwXscript</a> is an object oriented,
   aspect oriented programming language which can create both executables (ELF,
   EXE) and shared libraries (DLL, SO, DYNLIB). The compiler is implemented in
   its own language and translates scripts into LLVM-IR which can be optimized
   and translated into native code by the LLVM framework. Source code in
   gwScript contains definitions that expand the namespaces. So you can build
   your project and simply 'plug out' features by removing a file. The remaining
   project does not leave scars since you directly separate concerns by the
   'template' feature of gwX. It is also possible to add new features to a
   project by just adding files and without editing the original project. This
   language is used for example to create games or content management systems
   that should be extendable.</p>

<p>gwXscript is strongly typed and offers comfort with its native types string,
   hash and array. You can easily write new libraries in gwXscript or native
   code. gwXscript is type safe and users should not be able to crash your
   program or execute malicious code except code that is eating CPU time.</p>

</div>

<!--=========================================================================-->
<h3>include-what-you-use</h3>

<div>

<p><a href="http://code.google.com/p/include-what-you-use">include-what-you-use</a>
   is a tool to ensure that a file directly <code>#include</code>s
   all <code>.h</code> files that provide a symbol that the file uses. It also
   removes superfluous <code>#include</code>s from source files.</p>

</div>

<!--=========================================================================-->
<h3>LanguageKit and Pragmatic Smalltalk</h3>

<div>

<p><a href="http://etoileos.com/etoile/features/languagekit/">LanguageKit</a> is
   a framework for implementing dynamic languages sharing an object model with
   Objective-C. It provides static and JIT compilation using LLVM along with
   its own interpreter. Pragmatic Smalltalk is a dialect of Smalltalk, built on
   top of LanguageKit, that interfaces directly with Objective-C, sharing the
   same object representation and message sending behaviour. These projects are
   developed as part of the &Eacute;toi&eacute; desktop environment.</p>

</div>

<!--=========================================================================-->
<h3>Mono</h3>

<div>

<p>An open source, cross-platform implementation of C# and the CLR that is
   binary compatible with Microsoft.NET. Has an optional, dynamically-loaded
   LLVM code generation backend in Mini, the JIT compiler.</p>

<p>Note that we use a Git mirror of LLVM with some patches. See:
   https://github.com/mono/llvm</p>

</div>

<!--=========================================================================-->
<h3>Portable OpenCL (pocl)</h3>

<div>

<p>Portable OpenCL is an open source implementation of the OpenCL standard which
   can be easily adapted for new targets. One of the goals of the project is
   improving performance portability of OpenCL programs, avoiding the need for
   target-dependent manual optimizations. A "native" target is included, which
   allows running OpenCL kernels on the host (CPU).</p>

</div>

<!--=========================================================================-->
<h3>Pure</h3>
  
<div>
<p><a href="http://pure-lang.googlecode.com/">Pure</a> is an
  algebraic/functional programming language based on term rewriting. Programs
  are collections of equations which are used to evaluate expressions in a
  symbolic fashion. The interpreter uses LLVM as a backend to JIT-compile Pure
  programs to fast native code. Pure offers dynamic typing, eager and lazy
  evaluation, lexical closures, a hygienic macro system (also based on term
  rewriting), built-in list and matrix support (including list and matrix
  comprehensions) and an easy-to-use interface to C and other programming
  languages (including the ability to load LLVM bitcode modules, and inline C,
  C++, Fortran and Faust code in Pure programs if the corresponding LLVM-enabled
  compilers are installed).</p>
  
<p>Pure version 0.48 has been tested and is known to work with LLVM 3.0
  (and continues to work with older LLVM releases &gt;= 2.5).</p>

</div>

<!--=========================================================================-->
<h3>Renderscript</h3>

<div>

<p><a href="http://developer.android.com/guide/topics/renderscript/index.html">Renderscript</a>
   is Android's advanced 3D graphics rendering and compute API. It provides a
   portable C99-based language with extensions to facilitate common use cases
   for enhancing graphics and thread level parallelism. The Renderscript
   compiler frontend is based on Clang/LLVM. It emits a portable bitcode format
   for the actual compiled script code, as well as reflects a Java interface for
   developers to control the execution of the compiled bitcode. Executable
   machine code is then generated from this bitcode by an LLVM backend on the
   device. Renderscript is thus able to provide a mechanism by which Android
   developers can improve performance of their applications while retaining
   portability.</p>

</div>

<!--=========================================================================-->
<h3>SAFECode</h3>

<div>

<p><a href="http://safecode.cs.illinois.edu">SAFECode</a> is a memory safe C/C++
   compiler built using LLVM.  It takes standard, unannotated C/C++ code,
   analyzes the code to ensure that memory accesses and array indexing
   operations are safe, and instruments the code with run-time checks when
   safety cannot be proven statically.  SAFECode can be used as a debugging aid
   (like Valgrind) to find and repair memory safety bugs.  It can also be used
   to protect code from security attacks at run-time.</p>

</div>

<!--=========================================================================-->
<h3>The Stupid D Compiler (SDC)</h3>

<div>

<p><a href="https://github.com/bhelyer/SDC">The Stupid D Compiler</a> is a
   project seeking to write a self-hosting compiler for the D programming
   language without using the frontend of the reference compiler (DMD).</p>

</div>

<!--=========================================================================-->
<h3>TTA-based Co-design Environment (TCE)</h3>

<div>

<p>TCE is a toolset for designing application-specific processors (ASP) based on
   the Transport triggered architecture (TTA). The toolset provides a complete
   co-design flow from C/C++ programs down to synthesizable VHDL and parallel
   program binaries. Processor customization points include the register files,
   function units, supported operations, and the interconnection network.</p>
  
<p>TCE uses Clang and LLVM for C/C++ language support, target independent
   optimizations and also for parts of code generation. It generates new
   LLVM-based code generators "on the fly" for the designed TTA processors and
   loads them in to the compiler backend as runtime libraries to avoid
   per-target recompilation of larger parts of the compiler chain.</p>

</div>
  
<!--=========================================================================-->
<h3>Tart Programming Language</h3>

<div>

<p><a href="http://code.google.com/p/tart/">Tart</a> is a general-purpose,
   strongly typed programming language designed for application
   developers. Strongly inspired by Python and C#, Tart focuses on practical
   solutions for the professional software developer, while avoiding the clutter
   and boilerplate of legacy languages like Java and C++. Although Tart is still
   in development, the current implementation supports many features expected of
   a modern programming language, such as garbage collection, powerful
   bidirectional type inference, a greatly simplified syntax for template
   metaprogramming, closures and function literals, reflection, operator
   overloading, explicit mutability and immutability, and much more. Tart is
   flexible enough to accommodate a broad range of programming styles and
   philosophies, while maintaining a strong commitment to simplicity, minimalism
   and elegance in design.</p>

</div>

<!--=========================================================================-->
<h3>ThreadSanitizer</h3>

<div>

<p><a href="http://code.google.com/p/data-race-test/">ThreadSanitizer</a> is a
   data race detector for (mostly) C and C++ code, available for Linux, Mac OS
   and Windows. On different systems, we use binary instrumentation frameworks
   (Valgrind and Pin) as frontends that generate the program events for the race
   detection algorithm. On Linux, there's an option of using LLVM-based
   compile-time instrumentation.</p>

</div>

<!--=========================================================================-->
<h3>The ZooLib C++ Cross-Platform Application Framework</h3>

<div>

<p><a href="http://www.zoolib.org/">ZooLib</a> is Open Source under the MIT
   License. It provides GUI, filesystem access, TCP networking, thread-safe
   memory management, threading and locking for Mac OS X, Classic Mac OS,
   Microsoft Windows, POSIX operating systems with X11, BeOS, Haiku, Apple's iOS
   and Research in Motion's BlackBerry.</p>

<p>My current work is to use CLang's static analyzer to improve ZooLib's code
   quality.  I also plan to set up LLVM compiles of the demo programs and test
   programs using CLang and LLVM on all the platforms that CLang, LLVM and
   ZooLib all support.</p>

</div>

<!--=========================================================================-->
<!--
<h3>PinaVM</h3>
  
<div>
<p><a href="http://gitorious.org/pinavm/pages/Home">PinaVM</a> is an open
source, <a href="http://www.systemc.org/">SystemC</a> front-end. Unlike many
other front-ends, PinaVM actually executes the elaboration of the
program analyzed using LLVM's JIT infrastructure. It later enriches the
bitcode with SystemC-specific information.</p>
</div>
-->


<!--=========================================================================-->
<!--
<h3 id="icedtea">IcedTea Java Virtual Machine Implementation</h3>

<div>
<p>
<a href="http://icedtea.classpath.org/wiki/Main_Page">IcedTea</a> provides a
harness to build OpenJDK using only free software build tools and to provide
replacements for the not-yet free parts of OpenJDK.  One of the extensions that
IcedTea provides is a new JIT compiler named <a
href="http://icedtea.classpath.org/wiki/ZeroSharkFaq">Shark</a> which uses LLVM
to provide native code generation without introducing processor-dependent
code.
</p>

<p> OpenJDK 7 b112, IcedTea6 1.9 and IcedTea7 1.13 and later have been tested
and are known to work with LLVM 3.0 (and continue to work with older LLVM
releases &gt;= 2.6 as well).</p>
</div>
-->

<!--=========================================================================-->
<!--
<h3>Polly - Polyhedral optimizations for LLVM</h3>
  
<div>
<p>Polly is a project that aims to provide advanced memory access optimizations
to better take advantage of SIMD units, cache hierarchies, multiple cores or
even vector accelerators for LLVM. Built around an abstract mathematical
description based on Z-polyhedra, it provides the infrastructure to develop
advanced optimizations in LLVM and to connect complex external optimizers. In
its first year of existence Polly already provides an exact value-based
dependency analysis as well as basic SIMD and OpenMP code generation support.
Furthermore, Polly can use PoCC(Pluto) an advanced optimizer for data-locality
and parallelism.</p>
</div>
-->

<!--=========================================================================-->
<!--
<h3>Rubinius</h3>

<div>
  <p><a href="http://github.com/evanphx/rubinius">Rubinius</a> is an environment
  for running Ruby code which strives to write as much of the implementation in
  Ruby as possible. Combined with a bytecode interpreting VM, it uses LLVM to
  optimize and compile ruby code down to machine code. Techniques such as type
  feedback, method inlining, and deoptimization are all used to remove dynamism
  from ruby execution and increase performance.</p>
</div>
-->

<!--=========================================================================-->
<!--
<h3>
<a name="FAUST">FAUST Real-Time Audio Signal Processing Language</a>
</h3>

<div>
<p>
<a href="http://faust.grame.fr">FAUST</a> is a compiled language for real-time
audio signal processing. The name FAUST stands for Functional AUdio STream. Its
programming model combines two approaches: functional programming and block
diagram composition. In addition with the C, C++, JAVA output formats, the
Faust compiler can now generate LLVM bitcode, and works with LLVM 2.7-3.0.</p>

</div>
-->
  
</div>

<!-- *********************************************************************** -->
<h2>
  <a name="whatsnew">What's New in LLVM 3.0?</a>
</h2>
<!-- *********************************************************************** -->

<div>

<p>This release includes a huge number of bug fixes, performance tweaks and
   minor improvements.  Some of the major improvements and new features are
   listed in this section.</p>

<!--=========================================================================-->
<h3>
<a name="majorfeatures">Major New Features</a>
</h3>

<div>

<p>LLVM 3.0 includes several major new capabilities:</p>

<ul>

<!--
<li></li>
-->
  
</ul>
  
</div>

<!--=========================================================================-->
<h3>
<a name="coreimprovements">LLVM IR and Core Improvements</a>
</h3>

<div>

<p>LLVM IR has several new features for better support of new targets and that
   expose new optimization opportunities:</p>

<p>One of the biggest changes is that 3.0 has a new exception handling
   system. The old system used LLVM intrinsics to convey the exception handling
   information to the code generator. It worked in most cases, but not
   all. Inlining was especially difficult to get right. Also, the intrinsics
   could be moved away from the <code>invoke</code> instruction, making it hard
   to recover that information.</p>

<p>The new EH system makes exception handling a first-class member of the IR. It
   adds two new instructions:</p>

<ul>
  <li><a href="LangRef.html#i_landingpad"><code>landingpad</code></a> &mdash;
      this instruction defines a landing pad basic block. It contains all of the
      information that's needed by the code generator. It's also required to be
      the first non-PHI instruction in the landing pad. In addition, a landing
      pad may be jumped to only by the unwind edge of an <code>invoke</code>
      instruction.</li>

  <li><a href="LangRef.html#i_resume"><code>resume</code></a> &mdash; this
      instruction causes the current exception to resume traveling up the
      stack. It replaces the <code>@llvm.eh.resume</code> intrinsic.</li>
</ul>

<p>Converting from the old EH API to the new EH API is rather simple, because a
   lot of complexity has been removed. The two intrinsics,
   <code>@llvm.eh.exception</code> and <code>@llvm.eh.selector</code> have been
   superceded by the <code>landingpad</code> instruction. Instead of generating
   a call to <code>@llvm.eh.exception</code> and <code>@llvm.eh.selector</code>:

<div class="doc_code">
<pre>
Function *ExcIntr = Intrinsic::getDeclaration(TheModule,
                                              Intrinsic::eh_exception);
Function *SlctrIntr = Intrinsic::getDeclaration(TheModule,
                                                Intrinsic::eh_selector);

// The exception pointer.
Value *ExnPtr = Builder.CreateCall(ExcIntr, "exc_ptr");

std::vector&lt;Value*&gt; Args;
Args.push_back(ExnPtr);
Args.push_back(Builder.CreateBitCast(Personality,
                                     Type::getInt8PtrTy(Context)));

<i>// Add selector clauses to Args.</i>

// The selector call.
Builder.CreateCall(SlctrIntr, Args, "exc_sel");
</pre>
</div>

<p>You should instead generate a <code>landingpad</code> instruction, that
   returns an exception object and selector value:</p>

<div class="doc_code">
<pre>
LandingPadInst *LPadInst =
  Builder.CreateLandingPad(StructType::get(Int8PtrTy, Int32Ty, NULL),
                           Personality, 0);

Value *LPadExn = Builder.CreateExtractValue(LPadInst, 0);
Builder.CreateStore(LPadExn, getExceptionSlot());

Value *LPadSel = Builder.CreateExtractValue(LPadInst, 1);
Builder.CreateStore(LPadSel, getEHSelectorSlot());
</pre>
</div>

<p>It's now trivial to add the individual clauses to the <code>landingpad</code>
   instruction.</p>

<div class="doc_code">
<pre>
<i><b>// Adding a catch clause</b></i>
Constant *TypeInfo = getTypeInfo();
LPadInst-&gt;addClause(TypeInfo);

<i><b>// Adding a C++ catch-all</b></i>
LPadInst-&gt;addClause(Constant::getNullValue(Builder.getInt8PtrTy()));

<i><b>// Adding a cleanup</b></i>
LPadInst-&gt;setCleanup(true);

<i><b>// Adding a filter clause</b></i>
std::vector&lt;Constant*&gt; TypeInfos;
Constant *TypeInfo = getFilterTypeInfo();
TypeInfos.push_back(Builder.CreateBitCast(TypeInfo, Builder.getInt8PtrTy()));

ArrayType *FilterTy = ArrayType::get(Int8PtrTy, TypeInfos.size());
LPadInst-&gt;addClause(ConstantArray::get(FilterTy, TypeInfos));
</pre>
</div>

<p>Converting from using the <code>@llvm.eh.resume</code> intrinsic to
   the <code>resume</code> instruction is trivial. It takes the exception
   pointer and exception selector values returned by
   the <code>landingpad</code> instruction:</p>

<div class="doc_code">
<pre>
Type *UnwindDataTy = StructType::get(Builder.getInt8PtrTy(),
                                     Builder.getInt32Ty(), NULL);
Value *UnwindData = UndefValue::get(UnwindDataTy);
Value *ExcPtr = Builder.CreateLoad(getExceptionObjSlot());
Value *ExcSel = Builder.CreateLoad(getExceptionSelSlot());
UnwindData = Builder.CreateInsertValue(UnwindData, ExcPtr, 0, "exc_ptr");
UnwindData = Builder.CreateInsertValue(UnwindData, ExcSel, 1, "exc_sel");
Builder.CreateResume(UnwindData);
</pre>
</div>

</div>

<!--=========================================================================-->
<h3>
<a name="optimizer">Optimizer Improvements</a>
</h3>

<div>

<p>In addition to a large array of minor performance tweaks and bug fixes, this
   release includes a few major enhancements and additions to the
   optimizers:</p>

<ul>
<!--
<li></li>
-->
</li>
  
</ul>

</div>

<!--=========================================================================-->
<h3>
<a name="mc">MC Level Improvements</a>
</h3>

<div>

<p>The LLVM Machine Code (aka MC) subsystem was created to solve a number of
   problems in the realm of assembly, disassembly, object file format handling,
   and a number of other related areas that CPU instruction-set level tools work
   in.</p>

<ul>
<!--
<li></li>
-->
</ul>

<p>For more information, please see
   the <a href="http://blog.llvm.org/2010/04/intro-to-llvm-mc-project.html">Intro
   to the LLVM MC Project Blog Post</a>.</p>

</div>

<!--=========================================================================-->
<h3>
<a name="codegen">Target Independent Code Generator Improvements</a>
</h3>

<div>

<p>We have put a significant amount of work into the code generator
   infrastructure, which allows us to implement more aggressive algorithms and
   make it run faster:</p>

<ul>
<!--
<li></li>
-->
</ul>
</div>

<!--=========================================================================-->
<h3>
<a name="x86">X86-32 and X86-64 Target Improvements</a>
</h3>

<div>

<p>New features and major changes in the X86 target include:</p>

<ul>

  <li>The CRC32 intrinsics have been renamed.  The intrinsics were previously
      <code>@llvm.x86.sse42.crc32.[8|16|32]</code>
      and <code>@llvm.x86.sse42.crc64.[8|64]</code>. They have been renamed to
      <code>@llvm.x86.sse42.crc32.32.[8|16|32]</code> and
      <code>@llvm.x86.sse42.crc32.64.[8|64]</code>.</li>

</ul>

</div>

<!--=========================================================================-->
<h3>
<a name="ARM">ARM Target Improvements</a>
</h3>

<div>

<p>New features of the ARM target include:</p>

<ul>
<!--
<li></li>
-->
</ul>
</div>
  
<!--=========================================================================-->
<h3>
<a name="OtherTS">Other Target Specific Improvements</a>
</h3>

<div>

<ul>
<!--
<li></li>
-->
</ul>

</div>

<!--=========================================================================-->
<h3>
<a name="changes">Major Changes and Removed Features</a>
</h3>

<div>

<p>If you're already an LLVM user or developer with out-of-tree changes based on
   LLVM 2.9, this section lists some "gotchas" that you may run into upgrading
   from the previous release.</p>

<ul>
  <li>The <code>LLVMC</code> front end code was removed while separating
      out language independence.</li>
  <li>The <code>LowerSetJmp</code> pass wasn't used effectively by any
      target and has been removed.</li>
  <li>The old <code>TailDup</code> pass was not used in the standard pipeline
      and was unable to update ssa form, so it has been removed.
  <li>The syntax of volatile loads and stores in IR has been changed to
      "<code>load volatile</code>"/"<code>store volatile</code>".  The old
      syntax ("<code>volatile load</code>"/"<code>volatile store</code>")
      is still accepted, but is now considered deprecated.</li>
  <li>The old atomic intrinscs (<code>llvm.memory.barrier</code> and
      <code>llvm.atomic.*</code>) are now gone.  Please use the new atomic
      instructions, described in the <a href="Atomics.html">atomics guide</a>.
</ul>

<h4>Windows (32-bit)</h4>
<div>

<ul>
  <li>On Win32(MinGW32 and MSVC), Windows 2000 will not be supported.
      Windows XP or higher is required.</li>
</ul>

</div>

</div>

<!--=========================================================================-->
<h3>
<a name="api_changes">Internal API Changes</a>
</h3>

<div>

<p>In addition, many APIs have changed in this release.  Some of the major
   LLVM API changes are:</p>

<ul>
  <li>The biggest and most pervasive change is that llvm::Type's are no longer
      returned or accepted as 'const' values.  Instead, just pass around
      non-const Type's.</li>
  
  <li><code>PHINode::reserveOperandSpace</code> has been removed. Instead, you
      must specify how many operands to reserve space for when you create the
      PHINode, by passing an extra argument
      into <code>PHINode::Create</code>.</li>

  <li>PHINodes no longer store their incoming BasicBlocks as operands. Instead,
      the list of incoming BasicBlocks is stored separately, and can be accessed
      with new functions <code>PHINode::block_begin</code>
      and <code>PHINode::block_end</code>.</li>

  <li>Various functions now take an <code>ArrayRef</code> instead of either a
      pair of pointers (or iterators) to the beginning and end of a range, or a
      pointer and a length. Others now return an <code>ArrayRef</code> instead
      of a reference to a <code>SmallVector</code>
      or <code>std::vector</code>. These include:
<ul>
<!-- Please keep this list sorted. -->
<li><code>CallInst::Create</code></li>
<li><code>ComputeLinearIndex</code> (in <code>llvm/CodeGen/Analysis.h</code>)</li>
<li><code>ConstantArray::get</code></li>
<li><code>ConstantExpr::getExtractElement</code></li>
<li><code>ConstantExpr::getGetElementPtr</code></li>
<li><code>ConstantExpr::getInBoundsGetElementPtr</code></li>
<li><code>ConstantExpr::getIndices</code></li>
<li><code>ConstantExpr::getInsertElement</code></li>
<li><code>ConstantExpr::getWithOperands</code></li>
<li><code>ConstantFoldCall</code> (in <code>llvm/Analysis/ConstantFolding.h</code>)</li>
<li><code>ConstantFoldInstOperands</code> (in <code>llvm/Analysis/ConstantFolding.h</code>)</li>
<li><code>ConstantVector::get</code></li>
<li><code>DIBuilder::createComplexVariable</code></li>
<li><code>DIBuilder::getOrCreateArray</code></li>
<li><code>ExtractValueInst::Create</code></li>
<li><code>ExtractValueInst::getIndexedType</code></li>
<li><code>ExtractValueInst::getIndices</code></li>
<li><code>FindInsertedValue</code> (in <code>llvm/Analysis/ValueTracking.h</code>)</li>
<li><code>gep_type_begin</code> (in <code>llvm/Support/GetElementPtrTypeIterator.h</code>)</li>
<li><code>gep_type_end</code> (in <code>llvm/Support/GetElementPtrTypeIterator.h</code>)</li>
<li><code>GetElementPtrInst::Create</code></li>
<li><code>GetElementPtrInst::CreateInBounds</code></li>
<li><code>GetElementPtrInst::getIndexedType</code></li>
<li><code>InsertValueInst::Create</code></li>
<li><code>InsertValueInst::getIndices</code></li>
<li><code>InvokeInst::Create</code></li>
<li><code>IRBuilder::CreateCall</code></li>
<li><code>IRBuilder::CreateExtractValue</code></li>
<li><code>IRBuilder::CreateGEP</code></li>
<li><code>IRBuilder::CreateInBoundsGEP</code></li>
<li><code>IRBuilder::CreateInsertValue</code></li>
<li><code>IRBuilder::CreateInvoke</code></li>
<li><code>MDNode::get</code></li>
<li><code>MDNode::getIfExists</code></li>
<li><code>MDNode::getTemporary</code></li>
<li><code>MDNode::getWhenValsUnresolved</code></li>
<li><code>SimplifyGEPInst</code> (in <code>llvm/Analysis/InstructionSimplify.h</code>)</li>
<li><code>TargetData::getIndexedOffset</code></li>
</ul></li>

  <li>All forms of <code>StringMap::getOrCreateValue</code> have been remove
      except for the one which takes a <code>StringRef</code>.</li>

  <li>The <code>LLVMBuildUnwind</code> function from the C API was removed. The
      LLVM <code>unwind</code> instruction has been deprecated for a long time
      and isn't used by the current front-ends. So this was removed during the
      exception handling rewrite.</li>

  <li>The <code>LLVMAddLowerSetJmpPass</code> function from the C API was
      removed because the <code>LowerSetJmp</code> pass was removed.</li>

  <li>The <code>DIBuilder</code> interface used by front ends to encode
      debugging information in the LLVM IR now expects clients to
      use <code>DIBuilder::finalize()</code> at the end of translation unit to
      complete debugging information encoding.</li>

  <li>The way the type system works has been
      rewritten: <code>PATypeHolder</code> and <code>OpaqueType</code> are gone,
      and all APIs deal with <code>Type*</code> instead of <code>const
      Type*</code>.  If you need to create recursive structures, then create a
      named structure, and use <code>setBody()</code> when all its elements are
      built.  Type merging and refining is gone too: named structures are not
      merged with other structures, even if their layout is identical.  (of
      course anonymous structures are still uniqued by layout).</li>

  <li>TargetSelect.h moved to Support/ from Target/</li>

  <li>UpgradeIntrinsicCall no longer upgrades pre-2.9 intrinsic calls (for
      example <code>llvm.memset.i32</code>).</li>

  <li>It is mandatory to initialize all out-of-tree passes too and their dependencies now with
      <code>INITIALIZE_PASS{BEGIN,END,}</code>
      and <code>INITIALIZE_{PASS,AG}_DEPENDENCY</code>.</li>

  <li>The interface for MemDepResult in MemoryDependenceAnalysis has been
      enhanced with new return types Unknown and NonFuncLocal, in addition to
      the existing types Clobber, Def, and NonLocal.</li>
</ul>

</div>

</div>

<!-- *********************************************************************** -->
<h2>
  <a name="knownproblems">Known Problems</a>
</h2>
<!-- *********************************************************************** -->

<div>

<p>This section contains significant known problems with the LLVM system, listed
   by component.  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>

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

<div>

<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 Alpha, Blackfin, CellSPU, MicroBlaze, MSP430, MIPS, PTX, SystemZ and
      XCore backends are experimental.</li>

  <li><tt>llc</tt> "<tt>-filetype=obj</tt>" is experimental on all targets other
      than darwin and ELF X86 systems.</li>
</ul>

</div>

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

<div>

<ul>
  <li>The X86 backend does not yet support
      all <a href="http://llvm.org/PR879">inline assembly that uses the X86
      floating point stack</a>.  It supports the 'f' and 't' constraints, but
      not 'u'.</li>

  <li>The X86-64 backend does not yet support the LLVM IR instruction
      <tt>va_arg</tt>. Currently, front-ends support variadic argument
      constructs on X86-64 by lowering them manually.</li>

  <li>Windows x64 (aka Win64) code generator has a few issues.
    <ul>
      <li>llvm-gcc cannot build the mingw-w64 runtime currently due to lack of
          support for the 'u' inline assembly constraint and for X87 floating
          point inline assembly.</li>

      <li>On mingw-w64, you will see unresolved symbol <tt>__chkstk</tt> due
          to <a href="http://llvm.org/bugs/show_bug.cgi?id=8919">Bug 8919</a>.
          It is fixed
          in <a href="http://lists.cs.uiuc.edu/pipermail/llvm-commits/Week-of-Mon-20110321/118499.html">r128206</a>.</li>

      <li>Miss-aligned MOVDQA might crash your program. It is due to
          <a href="http://llvm.org/bugs/show_bug.cgi?id=9483">Bug 9483</a>, lack
          of handling aligned internal globals.</li>
      </ul>
  </li>

</ul>

</div>

<!-- ======================================================================= -->
<h3>
  <a name="ppc-be">Known problems with the PowerPC back-end</a>
</h3>

<div>

<ul>
  <li>The Linux PPC32/ABI support needs testing for the interpreter and static
      compilation, and lacks support for debug information.</li>
</ul>

</div>

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

<div>

<ul>
  <li>Thumb mode works only on ARMv6 or higher processors. On sub-ARMv6
      processors, thumb programs can crash or produce 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>
</ul>

</div>

<!-- ======================================================================= -->
<h3>
  <a name="sparc-be">Known problems with the SPARC back-end</a>
</h3>

<div>

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

<!-- ======================================================================= -->
<h3>
  <a name="mips-be">Known problems with the MIPS back-end</a>
</h3>

<div>

<ul>
  <li>64-bit MIPS targets are not supported yet.</li>
</ul>

</div>

<!-- ======================================================================= -->
<h3>
  <a name="alpha-be">Known problems with the Alpha back-end</a>
</h3>

<div>

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

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

<div>

<p>The C backend has numerous problems and is not being actively maintained.
   Depending on it for anything serious is not advised.</p>

<ul>
  <li><a href="http://llvm.org/PR802">The C backend has only basic support for
      inline assembly code</a>.</li>

  <li><a href="http://llvm.org/PR1658">The C backend violates the ABI of common
      C++ programs</a>, preventing intermixing between C++ compiled by the CBE
      and C++ code compiled with <tt>llc</tt> or native compilers.</li>

  <li>The C backend does not support all exception handling constructs.</li>

  <li>The C backend does not support arbitrary precision integers.</li>
</ul>

</div>


<!-- ======================================================================= -->
<h3>
  <a name="llvm-gcc">Known problems with the llvm-gcc front-end</a>
</h3>

<div>

<p><b>LLVM 2.9 was the last release of llvm-gcc.</b></p>

<p>llvm-gcc is generally very stable for the C family of languages.  The only
   major language feature of GCC not supported by llvm-gcc is the
   <tt>__builtin_apply</tt> family of builtins.   However, some extensions
   are only supported on some targets.  For example, trampolines are only
   supported on some targets (these are used when you take the address of a
   nested function).</p>

<p>Fortran support generally works, but there are still several unresolved bugs
   in <a href="http://llvm.org/bugs/">Bugzilla</a>.  Please see the
   tools/gfortran component for details.  Note that llvm-gcc is missing major
   Fortran performance work in the frontend and library that went into GCC after
   4.2.  If you are interested in Fortran, we recommend that you consider using
   <a href="#dragonegg">dragonegg</a> instead.</p>

<p>The llvm-gcc 4.2 Ada compiler has basic functionality, but is no longer being
   actively maintained.  If you are interested in Ada, we recommend that you
   consider using <a href="#dragonegg">dragonegg</a> instead.</p>

</div>

</div>

<!-- *********************************************************************** -->
<h2>
  <a name="additionalinfo">Additional Information</a>
</h2>
<!-- *********************************************************************** -->

<div>

<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-blue" alt="Valid CSS"></a>
  <a href="http://validator.w3.org/check/referer"><img
  src="http://www.w3.org/Icons/valid-html401-blue" alt="Valid HTML 4.01"></a>

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

</body>
</html>
