<!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">
  <meta encoding="utf8">
  <link rel="stylesheet" href="llvm.css" type="text/css">
  <title>LLVM 2.8 Release Notes</title>
</head>
<body>

<div class="doc_title">LLVM 2.8 Release Notes</div>

<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 2.8</a></li>
  <li><a href="#whatsnew">What's New in LLVM 2.8?</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 2.8
release.<br>
You may prefer the
<a href="http://llvm.org/releases/2.7/docs/ReleaseNotes.html">LLVM 2.7
Release Notes</a>.</h1>
-->

<!-- *********************************************************************** -->
<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.8.  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>
 

<!--
Almost dead code.
  include/llvm/Analysis/LiveValues.h => Dan
  lib/Transforms/IPO/MergeFunctions.cpp => consider for 2.8.
  GEPSplitterPass
-->
 
   
<!-- Features that need text if they're finished for 2.9:
  combiner-aa?
  strong phi elim
  loop dependence analysis
  TBAA
  CorrelatedValuePropagation
 -->
 
 <!-- Announcement, lldb, libc++ -->
 

<!-- *********************************************************************** -->
<div class="doc_section">
  <a name="subproj">Sub-project Status Update</a>
</div>
<!-- *********************************************************************** -->

<div class="doc_text">
<p>
The LLVM 2.8 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>

</div>


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

<div class="doc_text">

<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 2.8 time-frame, the Clang team has made many improvements:</p>

  <ul>
    <li>Clang C++ is now feature-complete with respect to the ISO C++ 1998 and 2003 standards.</li>
    <li>Added support for Objective-C++.</li>
    <li>Clang now uses LLVM-MC to directly generate object code and to parse inline assembly (on Darwin).</li>
    <li>Introduced many new warnings, including <code>-Wmissing-field-initializers</code>, <code>-Wshadow</code>, <code>-Wno-protocol</code>, <code>-Wtautological-compare</code>, <code>-Wstrict-selector-match</code>, <code>-Wcast-align</code>, <code>-Wunused</code> improvements, and greatly improved format-string checking.</li>
    <li>Introduced the "libclang" library, a C interface to Clang intended to support IDE clients.</li>
    <li>Added support for <code>#pragma GCC visibility</code>, <code>#pragma align</code>, and others.</li>
    <li>Added support for SSE, ARM NEON, and Altivec.</li>
    <li>Improved support for many Microsoft extensions.</li>
    <li>Implemented support for blocks in C++.</li>
    <li>Implemented precompiled headers for C++.</li>
    <li>Improved abstract syntax trees to retain more accurate source information.</li>
    <li>Added driver support for handling LLVM IR and bitcode files directly.</li>
    <li>Major improvements to compiler correctness for exception handling.</li>
    <li>Improved generated code quality in some areas:
      <ul>
        <li>Good code generation for X86-32 and X86-64 ABI handling.</li>
        <li>Improved code generation for bit-fields, although important work remains.</li>
      </ul>
    </li>
  </ul>
</div>

<!--=========================================================================-->
<div class="doc_subsection">
<a name="clangsa">Clang Static Analyzer</a>
</div>

<div class="doc_text">

<p>The <a href="http://clang-analyzer.llvm.org/">Clang Static Analyzer</a>
   project is an effort to use static source code analysis techniques to
   automatically find bugs in C and Objective-C programs (and hopefully <a
   href="http://clang-analyzer.llvm.org/dev_cxx.html">C++ in the
   future</a>!).  The tool is very good at finding bugs that occur on specific
   paths through code, such as on error conditions.</p>

<p>The LLVM 2.8 release fixes a number of bugs and slightly improves precision
   over 2.7, but there are no major new features in the release. 
</p>

</div>

<!--=========================================================================-->
<div class="doc_subsection">
<a name="dragonegg">DragonEgg: llvm-gcc ported to gcc-4.5</a>
</div>

<div class="doc_text">
<p>
<a href="http://dragonegg.llvm.org/">DragonEgg</a> is a port of llvm-gcc to
gcc-4.5.  Unlike llvm-gcc, dragonegg in theory does not require any gcc-4.5
modifications whatsoever (currently one small patch is needed) thanks to the
new <a href="http://gcc.gnu.org/wiki/plugins">gcc plugin architecture</a>.
DragonEgg is a gcc plugin that makes gcc-4.5 use the LLVM optimizers and code
generators instead of gcc's, just like with llvm-gcc.
</p>

<p>
DragonEgg is still a work in progress, but it is able to compile a lot of code,
for example all of gcc, LLVM and clang.  Currently Ada, C, C++ and Fortran work
well, while all other languages either don't work at all or only work poorly.
For the moment only the x86-32 and x86-64 targets are supported, and only on
linux and darwin (darwin may need additional gcc patches).
</p>

<p>
The 2.8 release has the following notable changes:
<ul>
<li>The plugin loads faster due to exporting fewer symbols.</li>
<li>Additional vector operations such as addps256 are now supported.</li>
<li>Ada global variables with no initial value are no longer zero initialized,
resulting in better optimization.</li>
<li>The '-fplugin-arg-dragonegg-enable-gcc-optzns' flag now runs all gcc
optimizers, rather than just a handful.</li>
<li>Fortran programs using common variables now link correctly.</li>
<li>GNU OMP constructs no longer crash the compiler.</li>
</ul>

</div>

<!--=========================================================================-->
<div class="doc_subsection">
<a name="vmkit">VMKit: JVM/CLI Virtual Machine Implementation</a>
</div>

<div class="doc_text">
<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 2.8, VMKit now supports copying garbage
collectors, and can be configured to use MMTk's copy mark-sweep garbage
collector.  In LLVM 2.8, the VMKit .NET VM is no longer being maintained.
</p>
</div>

<!--=========================================================================-->
<div class="doc_subsection">
<a name="compiler-rt">compiler-rt: Compiler Runtime Library</a>
</div>

<div class="doc_text">
<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>
All of the code in the compiler-rt project is available under the standard LLVM
License, a "BSD-style" license.  New in LLVM 2.8, compiler_rt now supports 
soft floating point (for targets that don't have a real floating point unit),
and includes an extensive testsuite for the "blocks" language feature and the
blocks runtime included in compiler_rt.</p>

</div>

<!--=========================================================================-->
<div class="doc_subsection">
<a name="lldb">LLDB: Low Level Debugger</a>
</div>

<div class="doc_text">
<p>
<a href="http://lldb.llvm.org/">LLDB</a> is a brand new member of the LLVM
umbrella of projects. LLDB is a next generation, high-performance debugger. It
is built as a set of reusable components which highly leverage existing
libraries in the larger LLVM Project, such as the Clang expression parser, the
LLVM disassembler and the LLVM JIT.</p>

<p>
LLDB is in early development and not included as part of the LLVM 2.8 release,
but is mature enough to support basic debugging scenarios on Mac OS X in C,
Objective-C and C++.  We'd really like help extending and expanding LLDB to 
support new platforms, new languages, new architectures, and new features.
</p>

</div>

<!--=========================================================================-->
<div class="doc_subsection">
<a name="libc++">libc++: C++ Standard Library</a>
</div>

<div class="doc_text">
<p>
<a href="http://libc++.llvm.org/">libc++</a> is another new member of the LLVM
family.  It is an implementation of the C++ standard library, written from the
ground up to specifically target the forthcoming C++'0X standard and focus on
delivering great performance.</p>

<p>
As of the LLVM 2.8 release, libc++ is virtually feature complete, but would
benefit from more testing and better integration with Clang++.  It is also
looking forward to the C++ committee finalizing the C++'0x standard.
</p>

</div>



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

<div class="doc_text">
<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>Although KLEE does not have any major new features as of 2.8, we have made
various minor improvements, particular to ease development:</p>
<ul>
  <li>Added support for LLVM 2.8. KLEE currently maintains compatibility with
    LLVM 2.6, 2.7, and 2.8.</li>
  <li>Added a buildbot for 2.6, 2.7, and trunk. A 2.8 buildbot will be coming
    soon following release.</li>
  <li>Fixed many C++ code issues to allow building with Clang++. Mostly
    complete, except for the version of MiniSAT which is inside the KLEE STP
    version.</li>
  <li>Improved support for building with separate source and build
    directories.</li>
  <li>Added support for "long double" on x86.</li>
  <li>Initial work on KLEE support for using 'lit' test runner instead of
    DejaGNU.</li>
  <li>Added <tt>configure</tt> support for using an external version of
    STP.</li>
</ul>

</div>


<!-- *********************************************************************** -->
<div class="doc_section">
  <a name="externalproj">External Open Source Projects Using LLVM 2.8</a>
</div>
<!-- *********************************************************************** -->

<div class="doc_text">

<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 2.8.</p>
</div>

<!--=========================================================================-->
<div class="doc_subsection">
<a name="tce">TTA-based Codesign Environment (TCE)</a>
</div>

<div class="doc_text">
<p>
<a href="http://tce.cs.tut.fi/">TCE</a> 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 llvm-gcc/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>

<!--=========================================================================-->
<div class="doc_subsection">
<a name="Horizon">Horizon Bytecode Compiler</a>
</div>

<div class="doc_text">
<p>
<a href="http://www.quokforge.org/projects/horizon">Horizon</a> is a bytecode
language and compiler written on top of LLVM, intended for producing
single-address-space managed code operating systems that
run faster than the equivalent multiple-address-space C systems.
More in-depth blurb is available on the <a 
href="http://www.quokforge.org/projects/horizon/wiki/Wiki">wiki</a>.</p>

</div>

<!--=========================================================================-->
<div class="doc_subsection">
<a name="clamav">Clam AntiVirus</a>
</div>

<div class="doc_text">
<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.  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. 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 2.8.
</p>

<p>The <a
href="http://git.clamav.net/gitweb?p=clamav-bytecode-compiler.git;a=blob_plain;f=docs/user/clambc-user.pdf">
ClamAV bytecode compiler</a> uses Clang and LLVM to compile a C-like
language, insert runtime checks, and generate ClamAV bytecode.</p>

</div>

<!--=========================================================================-->
<div class="doc_subsection">
<a name="pure">Pure</a>
</div>

<div class="doc_text">
<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. 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 C interface. The interpreter uses
LLVM as a backend to JIT-compile Pure programs to fast native code.</p>

<p>Pure versions 0.44 and later have been tested and are known to work with
LLVM 2.8 (and continue to work with older LLVM releases >= 2.5).</p>

</div>

<!--=========================================================================-->
<div class="doc_subsection">
<a name="GHC">Glasgow Haskell Compiler (GHC)</a>
</div>

<div class="doc_text">
<p>
<a href="http://www.haskell.org/ghc/">GHC</a> 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>In addition to the existing C and native code generators, GHC 7.0 now
supports an <a
href="http://hackage.haskell.org/trac/ghc/wiki/Commentary/Compiler/Backends/LLVM">LLVM
code generator</a>. GHC supports LLVM 2.7 and later.</p>

</div>

<!--=========================================================================-->
<div class="doc_subsection">
<a name="Clay">Clay Programming Language</a>
</div>

<div class="doc_text">
<p>
<a href="http://tachyon.in/clay/">Clay</a> is a new systems programming
language that is specifically designed for generic programming. It makes
generic programming very concise thanks to whole program type propagation. It
uses LLVM as its backend.</p>

</div>

<!--=========================================================================-->
<div class="doc_subsection">
<a name="llvm-py">llvm-py Python Bindings for LLVM</a>
</div>

<div class="doc_text">
<p>
<a href="http://www.mdevan.org/llvm-py/">llvm-py</a> has been updated to work
with LLVM 2.8.  llvm-py provides Python bindings for LLVM, allowing you to write a
compiler backend or a VM in Python.</p>

</div>


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

<div class="doc_text">
<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 and
2.8.</p>

</div>

<!--=========================================================================-->
<div class="doc_subsection">
<a name="jade">Jade Just-in-time Adaptive Decoder Engine</a>
</div>

<div class="doc_text">
<p><a 
href="http://sourceforge.net/apps/trac/orcc/wiki/JadeDocumentation">Jade</a>
(Just-in-time Adaptive Decoder Engine) is a generic video decoder engine using
LLVM for just-in-time compilation of video decoder configurations. Those
configurations are designed by MPEG Reconfigurable Video Coding (RVC) committee.
MPEG RVC standard is built on a stream-based dataflow representation of
decoders. It is composed of a standard library of coding tools written in
RVC-CAL language and a dataflow configuration &#8212; block diagram &#8212;
of a decoder.</p>

<p>Jade project is hosted as part of the <a href="http://orcc.sf.net">Open 
RVC-CAL Compiler</a> and requires it to translate the RVC-CAL standard library
of video coding tools into an LLVM assembly code.</p>

</div>

<!--=========================================================================-->
<div class="doc_subsection">
<a name="neko_llvm_jit">LLVM JIT for Neko VM</a>
</div>

<div class="doc_text">
<p><a href="http://github.com/vava/neko_llvm_jit">Neko LLVM JIT</a>
replaces the standard Neko JIT with an LLVM-based implementation.  While not
fully complete, it is already providing a 1.5x speedup on 64-bit systems.
Neko LLVM JIT requires LLVM 2.8 or later.</p>

</div>

<!--=========================================================================-->
<div class="doc_subsection">
<a name="crack">Crack Scripting Language</a>
</div>

<div class="doc_text">
<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.  Crack 0.2 works with LLVM 2.7, and the forthcoming Crack 0.2.1 release
builds on LLVM 2.8.</p>

</div>

<!--=========================================================================-->
<div class="doc_subsection">
<a name="DresdenTM">Dresden TM Compiler (DTMC)</a>
</div>

<div class="doc_text">
<p>
<a href="http://tm.inf.tu-dresden.de">DTMC</a> provides support for 
Transactional Memory, which is an easy-to-use and efficient way to synchronize 
accesses to shared memory. Transactions can contain normal C/C++ code (e.g., 
<code>__transaction { list.remove(x); x.refCount--; }</code>) and will be executed 
virtually atomically and isolated from other transactions.</p>

</div>

<!--=========================================================================-->
<div class="doc_subsection">
<a name="Kai">Kai Programming Language</a>
</div>

<div class="doc_text">
<p>
<a href="http://www.oriontransfer.co.nz/research/kai">Kai</a> (Japanese 会 for
meeting/gathering) is an experimental interpreter that provides a highly
extensible runtime environment and explicit control over the compilation
process. Programs are defined using nested symbolic expressions, which are all
parsed into first-class values with minimal intrinsic semantics. Kai can
generate optimised code at run-time (using LLVM) in order to exploit the nature
of the underlying hardware and to integrate with external software libraries.
It is a unique exploration into world of dynamic code compilation, and the
interaction between high level and low level semantics.</p>

</div>

<!--=========================================================================-->
<div class="doc_subsection">
<a name="OSL">OSL: Open Shading Language</a>
</div>

<div class="doc_text">
<p>
<a href="http://code.google.com/p/openshadinglanguage/">OSL</a> is a shading
language designed for use in physically based renderers and in particular
production rendering. By using LLVM instead of the interpreter, it was able to
meet its performance goals (&gt;= C-code) while retaining the benefits of
runtime specialization and a portable high-level language.
</p>

</div>



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

<div class="doc_text">

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

</div>

<!--=========================================================================-->
<div class="doc_subsection">
<a name="majorfeatures">Major New Features</a>
</div>

<div class="doc_text">

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

<ul>
<li>As mentioned above, <a href="#libc++">libc++</a> and <a 
   href="#lldb">LLDB</a> are major new additions to the LLVM collective.</li>
<li>LLVM 2.8 now has pretty decent support for debugging optimized code.  You
    should be able to reliably get debug info for function arguments, assuming
    that the value is actually available where you have stopped.</li>
<li>A new 'llvm-diff' tool is available that does a semantic diff of .ll
    files.</li>
<li>The <a href="#mc">MC subproject</a> has made major progress in this release.
    Direct .o file writing support for darwin/x86[-64] is now reliable and
    support for other targets and object file formats are in progress.</li>
</ul>

</div>

<!--=========================================================================-->
<div class="doc_subsection">
<a name="coreimprovements">LLVM IR and Core Improvements</a>
</div>

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

<ul>
<li>The <a href="LangRef.html#int_libc">memcpy, memmove, and memset</a>
  intrinsics now take address space qualified pointers and a bit to indicate
  whether the transfer is "<a href="LangRef.html#volatile">volatile</a>" or not.
</li>
<li>Per-instruction debug info metadata is much faster and uses less memory by
    using the new DebugLoc class.</li>
<li>LLVM IR now has a more formalized concept of "<a
    href="LangRef.html#trapvalues">trap values</a>", which allow the optimizer
    to optimize more aggressively in the presence of undefined behavior, while
    still producing predictable results.</li>
<li>LLVM IR now supports two new <a href="LangRef.html#linkage">linkage
    types</a> (linker_private_weak and linker_private_weak_def_auto) which map
    onto some obscure MachO concepts.</li>
</ul>

</div>

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

<div class="doc_text">

<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>As mentioned above, the optimizer now has support for updating debug
   information as it goes.  A key aspect of this is the new <a
   href="SourceLevelDebugging.html#format_common_value">llvm.dbg.value</a>
   intrinsic.  This intrinsic represents debug info for variables that are
   promoted to SSA values (typically by mem2reg or the -scalarrepl passes).</li>

<li>The JumpThreading pass is now much more aggressive about implied value
    relations, allowing it to thread conditions like "a == 4" when a is known to
    be 13 in one of the predecessors of a block.  It does this in conjunction
    with the new LazyValueInfo analysis pass.</li>
<li>The new RegionInfo analysis pass identifies single-entry single-exit regions
    in the CFG.  You can play with it with the "opt -regions analyze" or
    "opt -view-regions" commands.</li>
<li>The loop optimizer has significantly improved strength reduction and analysis
  capabilities.  Notably it is able to build on the trap value and signed
  integer overflow information to optimize &lt;= and &gt;= loops.</li>
<li>The CallGraphSCCPassManager now has some basic support for iterating within
    an SCC when a optimizer devirtualizes a function call.  This allows inlining
    through indirect call sites that are devirtualized by store-load forwarding
    and other optimizations.</li>
<li>The new <A href="Passes.html#loweratomic">-loweratomic</a> pass is available
    to lower atomic instructions into their non-atomic form.  This can be useful
    to optimize generic code that expects to run in a single-threaded
    environment.</li>
</ul>

<!--
<p>In addition to these features that are done in 2.8, there is preliminary
   support in the release for Type Based Alias Analysis 
  Preliminary work on TBAA but not usable in 2.8.
  New CorrelatedValuePropagation pass, not on by default in 2.8 yet.
-->

</div>

<!--=========================================================================-->
<div class="doc_subsection">
<a name="mc">MC Level Improvements</a>
</div>

<div class="doc_text">
<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>

<p>The MC subproject has made great leaps in LLVM 2.8.  For example, support for
   directly writing .o files from LLC (and clang) now works reliably for
   darwin/x86[-64] (including inline assembly support) and the integrated
   assembler is turned on by default in Clang for these targets.  This provides
   improved compile times among other things.</p>

<ul>
<li>The entire compiler has converted over to using the MCStreamer assembler API
    instead of writing out a .s file textually.</li>
<li>The "assembler parser" is far more mature than in 2.7, supporting a full
    complement of directives, now supports assembler macros, etc.</li>
<li>The "assembler backend" has been completed, including support for relaxation
    relocation processing and all the other things that an assembler does.</li>
<li>The MachO file format support is now fully functional and works.</li>
<li>The MC disassembler now fully supports ARM and Thumb.  ARM assembler support
    is still in early development though.</li>
<li>The X86 MC assembler now supports the X86 AES and AVX instruction set.</li>
<li>Work on ELF and COFF object files and ARM target support is well underway,
    but isn't useful yet in LLVM 2.8.  Please contact the llvmdev mailing list
    if you're interested in this.</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>	


<!--=========================================================================-->
<div class="doc_subsection">
<a name="codegen">Target Independent Code Generator Improvements</a>
</div>

<div class="doc_text">

<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>The clang/gcc -momit-leaf-frame-pointer argument is now supported.</li>
<li>The clang/gcc -ffunction-sections and -fdata-sections arguments are now
    supported on ELF targets (like GCC).</li>
<li>The MachineCSE pass is now tuned and on by default.  It eliminates common
    subexpressions that are exposed when lowering to machine instructions.</li>
<li>The "local" register allocator was replaced by a new "fast" register
    allocator.  This new allocator (which is often used at -O0) is substantially
    faster and produces better code than the old local register allocator.</li>
<li>A new LLC "-regalloc=default" option is available, which automatically
    chooses a register allocator based on the -O optimization level.</li>
<li>The common code generator code was modified to promote illegal argument and
    return value vectors to wider ones when possible instead of scalarizing
    them.  For example, &lt;3 x float&gt; will now pass in one SSE register
    instead of 3 on X86.  This generates substantially better code since the
    rest of the code generator was already expecting this.</li>
<li>The code generator uses a new "COPY" machine instruction.  This speeds up
    the code generator and eliminates the need for targets to implement the 
    isMoveInstr hook.  Also, the copyRegToReg hook was renamed to copyPhysReg
    and simplified.</li>
<li>The code generator now has a "LocalStackSlotPass", which optimizes stack
    slot access for targets (like ARM) that have limited stack displacement
    addressing.</li>
<li>A new "PeepholeOptimizer" is available, which eliminates sign and zero
    extends, and optimizes away compare instructions when the condition result
    is available from a previous instruction.</li>
<li>Atomic operations now get legalized into simpler atomic operations if not
    natively supported, easing the implementation burden on targets.</li>
<li>We have added two new bottom-up pre-allocation register pressure aware schedulers:
<ol>
<li>The hybrid scheduler schedules aggressively to minimize schedule length when registers are available and avoid overscheduling in high pressure situations.</li>
<li>The instruction-level-parallelism scheduler schedules for maximum ILP when registers are available and avoid overscheduling in high pressure situations.</li>
</ol></li>
<li>The tblgen type inference algorithm was rewritten to be more consistent and
     diagnose more target bugs.  If you have an out-of-tree backend, you may
     find that it finds bugs in your target description.  This support also
     allows limited support for writing patterns for instructions that return
     multiple results (e.g. a virtual register and a flag result).  The 
     'parallel' modifier in tblgen was removed, you should use the new support
     for multiple results instead.</li>
<li>A new (experimental) "-rendermf" pass is available which renders a
    MachineFunction into HTML, showing live ranges and other useful
    details.</li>
<li>The new SubRegIndex tablegen class allows subregisters to be indexed
    symbolically instead of numerically.  If your target uses subregisters you
    will need to adapt to use SubRegIndex when you upgrade to 2.8.</li>
<!-- SplitKit -->

<li>The -fast-isel instruction selection path (used at -O0 on X86) was rewritten
    to work bottom-up on basic blocks instead of top down.  This makes it
    slightly faster (because the MachineDCE pass is not needed any longer) and
    allows it to generate better code in some cases.</li>

</ul>
</div>

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

<div class="doc_text">
<p>New features and major changes in the X86 target include:
</p>

<ul>
<li>The X86 backend now supports holding X87 floating point stack values
    in registers across basic blocks, dramatically improving performance of code
    that uses long double, and when targeting CPUs that don't support SSE.</li>

<li>The X86 backend now uses a SSEDomainFix pass to optimize SSE operations.  On
    Nehalem ("Core i7") and newer CPUs there is a 2 cycle latency penalty on
    using a register in a different domain than where it was defined. This pass
    optimizes away these stalls.</li>

<li>The X86 backend now promotes 16-bit integer operations to 32-bits when
    possible. This avoids 0x66 prefixes, which are slow on some
    microarchitectures and bloat the code on all of them.</li>

<li>The X86 backend now supports the Microsoft "thiscall" calling convention,
    and a <a href="LangRef.html#callingconv">calling convention</a> to support
    <a href="#GHC">ghc</a>.</li>

<li>The X86 backend supports a new "llvm.x86.int" intrinsic, which maps onto
    the X86 "int $42" and "int3" instructions.</li>

<li>At the IR level, the &lt;2 x float&gt; datatype is now promoted and passed
    around as a &lt;4 x float&gt; instead of being passed and returned as an MMX
    vector.  If you have a frontend that uses this, please pass and return a
    &lt;2 x i32&gt; instead (using bitcasts).</li>

<li>When printing .s files in verbose assembly mode (the default for clang -S),
    the X86 backend now decodes X86 shuffle instructions and prints human
    readable comments after the most inscrutable of them, e.g.:
    
<pre>
  insertps $113, %xmm3, %xmm0 <i># xmm0 = zero,xmm0[1,2],xmm3[1]</i>
  unpcklps %xmm1, %xmm0       <i># xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1]</i>
  pshufd   $1, %xmm1, %xmm1   <i># xmm1 = xmm1[1,0,0,0]</i>
</pre>
</li>
        
</ul>

</div>

<!--=========================================================================-->
<div class="doc_subsection">
<a name="ARM">ARM Target Improvements</a>
</div>

<div class="doc_text">
<p>New features of the ARM target include:
</p>

<ul>
<li>The ARM backend now optimizes tail calls into jumps.</li>
<li>Scheduling is improved through the new list-hybrid scheduler as well
    as through better modeling of structural hazards.</li>
<li><a href="LangRef.html#int_fp16">Half float</a> instructions are now
    supported.</li>
<li>NEON support has been improved to model instructions which operate onto 
    multiple consecutive registers more aggressively.  This avoids lots of
    extraneous register copies.</li>
<li>The ARM backend now uses a new "ARMGlobalMerge" pass, which merges several
    global variables into one, saving extra address computation (all the global
    variables can be accessed via same base address) and potentially reducing
    register pressure.</li>

<li>The ARM has received many minor improvements and tweaks which lead to
substantially better performance in a wide range of different scenarios.</li>

<li>The ARM NEON intrinsics have been substantially reworked to reduce
    redundancy and improve code generation.  Some of the major changes are:
  <ol>
  <li>
    All of the NEON load and store intrinsics (llvm.arm.neon.vld* and
    llvm.arm.neon.vst*) take an extra parameter to specify the alignment in bytes
    of the memory being accessed.
  </li>
  <li>
    The llvm.arm.neon.vaba intrinsic (vector absolute difference and
    accumulate) has been removed.  This operation is now represented using
    the llvm.arm.neon.vabd intrinsic (vector absolute difference) followed by a
    vector add.
  </li>
  <li>
    The llvm.arm.neon.vabdl and llvm.arm.neon.vabal intrinsics (lengthening
    vector absolute difference with and without accumulation) have been removed.
    They are represented using the llvm.arm.neon.vabd intrinsic (vector absolute
    difference) followed by a vector zero-extend operation, and for vabal,
    a vector add.
  </li>
  <li>
    The llvm.arm.neon.vmovn intrinsic has been removed.  Calls of this intrinsic
    are now replaced by vector truncate operations.
  </li>
  <li>
    The llvm.arm.neon.vmovls and llvm.arm.neon.vmovlu intrinsics have been
    removed.  They are now represented as vector sign-extend (vmovls) and
    zero-extend (vmovlu) operations.
  </li>
  <li>
    The llvm.arm.neon.vaddl*, llvm.arm.neon.vaddw*, llvm.arm.neon.vsubl*, and
    llvm.arm.neon.vsubw* intrinsics (lengthening vector add and subtract) have
    been removed.  They are replaced by vector add and vector subtract operations
    where one (vaddw, vsubw) or both (vaddl, vsubl) of the operands are either
    sign-extended or zero-extended.
  </li>
  <li>
    The llvm.arm.neon.vmulls, llvm.arm.neon.vmullu, llvm.arm.neon.vmlal*, and
    llvm.arm.neon.vmlsl* intrinsics (lengthening vector multiply with and without
    accumulation and subtraction) have been removed.  These operations are now
    represented as vector multiplications where the operands are either
    sign-extended or zero-extended, followed by a vector add for vmlal or a
    vector subtract for vmlsl.  Note that the polynomial vector multiply
    intrinsic, llvm.arm.neon.vmullp, remains unchanged.
  </li>
  </ol>
</li>

</ul>
</div>


<!--=========================================================================-->
<div class="doc_subsection">
<a name="changes">Major Changes and Removed Features</a>
</div>

<div class="doc_text">

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

<ul>
<li>The build configuration machinery changed the output directory names.  It
    wasn't clear to many people that a "Release-Asserts" build was a release build
    without asserts.  To make this more clear, "Release" does not include
    assertions and "Release+Asserts" does (likewise, "Debug" and
    "Debug+Asserts").</li>
<li>The MSIL Backend was removed, it was unsupported and broken.</li>
<li>The ABCD, SSI, and SCCVN passes were removed.  These were not fully
    functional and their behavior has been or will be subsumed by the
    LazyValueInfo  pass.</li>
<li>The LLVM IR 'Union' feature was removed.  While this is a desirable feature
    for LLVM IR to support, the existing implementation was half baked and
    barely useful.  We'd really like anyone interested to resurrect the work and
    finish it for a future release.</li>
<li>If you're used to reading .ll files, you'll probably notice that .ll file
    dumps don't produce #uses comments anymore.  To get them, run a .bc file
    through "llvm-dis --show-annotations".</li>
<li>Target triples are now stored in a normalized form, and all inputs from
    humans are expected to be normalized by Triple::normalize before being
    stored in a module triple or passed to another library.</li>
</ul>



<p>In addition, many APIs have changed in this release.  Some of the major LLVM
API changes are:</p>
<ul>
<li>LLVM 2.8 changes the internal order of operands in <a
  href="http://llvm.org/doxygen/classllvm_1_1InvokeInst.html"><tt>InvokeInst</tt></a>
  and <a href="http://llvm.org/doxygen/classllvm_1_1CallInst.html"><tt>CallInst</tt></a>.
  To be portable across releases, please use the <tt>CallSite</tt> class and the
  high-level accessors, such as <tt>getCalledValue</tt> and
  <tt>setUnwindDest</tt>.
</li>
<li>
  You can no longer pass use_iterators directly to cast&lt;&gt; (and similar),
  because these routines tend to perform costly dereference operations more
  than once. You have to dereference the iterators yourself and pass them in.
</li>
<li>
  llvm.memcpy.*, llvm.memset.*, llvm.memmove.* intrinsics take an extra
  parameter now ("i1 isVolatile"), totaling 5 parameters, and the pointer
  operands are now address-space qualified.
  If you were creating these intrinsic calls and prototypes yourself (as opposed
  to using Intrinsic::getDeclaration), you can use
  UpgradeIntrinsicFunction/UpgradeIntrinsicCall to be portable across releases.
</li>
<li>
  SetCurrentDebugLocation takes a DebugLoc now instead of a MDNode.
  Change your code to use
  SetCurrentDebugLocation(DebugLoc::getFromDILocation(...)).
</li>
<li>
  The <tt>RegisterPass</tt> and <tt>RegisterAnalysisGroup</tt> templates are
  considered deprecated, but continue to function in LLVM 2.8.  Clients are  
  strongly advised to use the upcoming <tt>INITIALIZE_PASS()</tt> and
  <tt>INITIALIZE_AG_PASS()</tt> macros instead.
</li>
<li>
  The constructor for the Triple class no longer tries to understand odd triple
  specifications.  Frontends should ensure that they only pass valid triples to
  LLVM.  The Triple::normalize utility method has been added to help front-ends
  deal with funky triples.
</li>
  
<li>
  Some APIs were renamed:
  <ul>
  <li>llvm_report_error -&gt; report_fatal_error</li>
  <li>llvm_install_error_handler -&gt; install_fatal_error_handler</li>
  <li>llvm::DwarfExceptionHandling -&gt; llvm::JITExceptionHandling</li>
  <li>VISIBILITY_HIDDEN -&gt; LLVM_LIBRARY_VISIBILITY</li>
  </ul>
</li>

<li>
  Some public headers were renamed:
  <ul>
    <li><tt>llvm/Assembly/AsmAnnotationWriter.h</tt> was renamed
    to <tt>llvm/Assembly/AssemblyAnnotationWriter.h</tt>
    </li>
  </ul>
</ul>

</div>

<!--=========================================================================-->
<div class="doc_subsection">
<a name="devtree_changes">Development Infrastructure Changes</a>
</div>

<div class="doc_text">

<p>This section lists changes to the LLVM development infrastructure. This
mostly impacts users who actively work on LLVM or follow development on
mainline, but may also impact users who leverage the LLVM build infrastructure
or are interested in LLVM qualification.</p>

<ul>
  <li>The default for <tt>make check</tt> is now to use
  the <a href="http://llvm.org/cmds/lit.html">lit</a> testing tool, which is
  part of LLVM itself. You can use <tt>lit</tt> directly as well, or use
  the <tt>llvm-lit</tt> tool which is created as part of a Makefile or CMake
  build (and knows how to find the appropriate tools). See the <tt>lit</tt>
  documentation and the <a href="http://blog.llvm.org/2009/12/lit-it.html">blog
  post</a>, and <a href="http://llvm.org/bugs/show_bug.cgi?id=5217">PR5217</a>
  for more information.</li>

  <li>The LLVM <tt>test-suite</tt> infrastructure has a new "simple" test format
  (<tt>make TEST=simple</tt>). The new format is intended to require only a
  compiler and not a full set of LLVM tools. This makes it useful for testing
  released compilers, for running the test suite with other compilers (for
  performance comparisons), and makes sure that we are testing the compiler as
  users would see it. The new format is also designed to work using reference
  outputs instead of comparison to a baseline compiler, which makes it run much
  faster and makes it less system dependent.</li>

  <li>Significant progress has been made on a new interface to running the
  LLVM <tt>test-suite</tt> (aka the LLVM "nightly tests") using
  the <a href="http://llvm.org/docs/lnt">LNT</a> infrastructure. The LNT
  interface to the <tt>test-suite</tt> brings significantly improved reporting
  capabilities for monitoring the correctness and generated code quality
  produced by LLVM over time.</li>
</ul>
</div>

<!-- *********************************************************************** -->
<div class="doc_section">
  <a name="knownproblems">Known Problems</a>
</div>
<!-- *********************************************************************** -->

<div class="doc_text">

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

</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 Alpha, Blackfin, CellSPU, MicroBlaze, MSP430, MIPS, PIC16, SystemZ
    and XCore backends are experimental.</li>
<li><tt>llc</tt> "<tt>-filetype=obj</tt>" is experimental on all targets
    other than darwin-i386 and darwin-x86_64.</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
    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>Win64 code generation wasn't widely tested. Everything should work, but we
    expect small issues to happen. Also, llvm-gcc cannot build the mingw64
    runtime currently due to lack of support for the 'u' inline assembly
    constraint and for X87 floating point inline assembly.</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>
</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>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 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>

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

<div class="doc_text">

<ul>
<li>64-bit MIPS targets are not supported yet.</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="c-be">Known problems with the C back-end</a>
</div>

<div class="doc_text">

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


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

<div class="doc_text">

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