So many people have touched this, it doesn't make sense to ascribe authorship anymore.
[oota-llvm.git] / docs / ReleaseNotes.html
1 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
2                       "http://www.w3.org/TR/html4/strict.dtd">
3 <html>
4 <head>
5   <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
6   <link rel="stylesheet" href="_static/llvm.css" type="text/css">
7   <title>LLVM 3.2 Release Notes</title>
8 </head>
9 <body>
10
11 <h1>LLVM 3.2 Release Notes</h1>
12
13 <div>
14 <img style="float:right" src="http://llvm.org/img/DragonSmall.png"
15      width="136" height="136" alt="LLVM Dragon Logo">
16 </div>
17
18 <ol>
19   <li><a href="#intro">Introduction</a></li>
20   <li><a href="#subproj">Sub-project Status Update</a></li>
21   <li><a href="#externalproj">External Projects Using LLVM 3.2</a></li>
22   <li><a href="#whatsnew">What's New in LLVM?</a></li>
23   <li><a href="GettingStarted.html">Installation Instructions</a></li>
24   <li><a href="#knownproblems">Known Problems</a></li>
25   <li><a href="#additionalinfo">Additional Information</a></li>
26 </ol>
27
28 <div class="doc_author">
29   <p>Written by the <a href="http://llvm.org/">LLVM Team</a></p>
30 </div>
31
32 <h1 style="color:red">These are in-progress notes for the upcoming LLVM 3.2
33 release.<br>
34 You may prefer the
35 <a href="http://llvm.org/releases/3.1/docs/ReleaseNotes.html">LLVM 3.1
36 Release Notes</a>.</h1>
37
38 <!-- *********************************************************************** -->
39 <h2>
40   <a name="intro">Introduction</a>
41 </h2>
42 <!-- *********************************************************************** -->
43
44 <div>
45
46 <p>This document contains the release notes for the LLVM Compiler
47    Infrastructure, release 3.2.  Here we describe the status of LLVM, including
48    major improvements from the previous release, improvements in various
49    subprojects of LLVM, and some of the current users of the code.  All LLVM
50    releases may be downloaded from the <a href="http://llvm.org/releases/">LLVM
51    releases web site</a>.</p>
52
53 <p>For more information about LLVM, including information about the latest
54    release, please check out the <a href="http://llvm.org/">main LLVM web
55    site</a>.  If you have questions or comments,
56    the <a href="http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev">LLVM
57    Developer's Mailing List</a> is a good place to send them.</p>
58
59 <p>Note that if you are reading this file from a Subversion checkout or the main
60    LLVM web page, this document applies to the <i>next</i> release, not the
61    current one.  To see the release notes for a specific release, please see the
62    <a href="http://llvm.org/releases/">releases page</a>.</p>
63
64 </div>
65
66
67 <!-- *********************************************************************** -->
68 <h2>
69   <a name="subproj">Sub-project Status Update</a>
70 </h2>
71 <!-- *********************************************************************** -->
72
73 <div>
74
75 <p>The LLVM 3.2 distribution currently consists of code from the core LLVM
76    repository, which roughly includes the LLVM optimizers, code generators and
77    supporting tools, and the Clang repository. In addition to this code, the
78    LLVM Project includes other sub-projects that are in development. Here we
79    include updates on these subprojects.</p>
80
81 <!--=========================================================================-->
82 <h3>
83 <a name="clang">Clang: C/C++/Objective-C Frontend Toolkit</a>
84 </h3>
85
86 <div>
87
88 <p><a href="http://clang.llvm.org/">Clang</a> is an LLVM front end for the C,
89    C++, and Objective-C languages. Clang aims to provide a better user
90    experience through expressive diagnostics, a high level of conformance to
91    language standards, fast compilation, and low memory use. Like LLVM, Clang
92    provides a modular, library-based architecture that makes it suitable for
93    creating or integrating with other development tools. Clang is considered a
94    production-quality compiler for C, Objective-C, C++ and Objective-C++ on x86
95    (32- and 64-bit), and for Darwin/ARM targets.</p>
96
97 <p>In the LLVM 3.2 time-frame, the Clang team has made many improvements.
98    Highlights include:</p>
99 <ul>
100   <li>...</li>
101 </ul>
102
103 <p>For more details about the changes to Clang since the 3.1 release, see the
104    <a href="http://clang.llvm.org/docs/ReleaseNotes.html">Clang release
105    notes.</a></p>
106
107 <p>If Clang rejects your code but another compiler accepts it, please take a
108    look at the <a href="http://clang.llvm.org/compatibility.html">language
109    compatibility</a> guide to make sure this is not intentional or a known
110    issue.</p>
111
112 </div>
113
114 <!--=========================================================================-->
115 <h3>
116 <a name="dragonegg">DragonEgg: GCC front-ends, LLVM back-end</a>
117 </h3>
118
119 <div>
120
121 <p><a href="http://dragonegg.llvm.org/">DragonEgg</a> is a
122    <a href="http://gcc.gnu.org/wiki/plugins">gcc plugin</a> that replaces GCC's
123    optimizers and code generators with LLVM's. It works with gcc-4.5 and gcc-4.6
124    (and partially with gcc-4.7), can target the x86-32/x86-64 and ARM processor
125    families, and has been successfully used on the Darwin, FreeBSD, KFreeBSD,
126    Linux and OpenBSD platforms.  It fully supports Ada, C, C++ and Fortran.  It
127    has partial support for Go, Java, Obj-C and Obj-C++.</p>
128
129 <p>The 3.2 release has the following notable changes:</p>
130
131 <ul>
132   <li>...</li>
133 </ul>
134
135 </div>
136
137 <!--=========================================================================-->
138 <h3>
139 <a name="compiler-rt">compiler-rt: Compiler Runtime Library</a>
140 </h3>
141
142 <div>
143
144 <p>The new LLVM <a href="http://compiler-rt.llvm.org/">compiler-rt project</a>
145    is a simple library that provides an implementation of the low-level
146    target-specific hooks required by code generation and other runtime
147    components.  For example, when compiling for a 32-bit target, converting a
148    double to a 64-bit unsigned integer is compiled into a runtime call to the
149    <code>__fixunsdfdi</code> function. The compiler-rt library provides highly
150    optimized implementations of this and other low-level routines (some are 3x
151    faster than the equivalent libgcc routines).</p>
152
153 <p>The 3.2 release has the following notable changes:</p>
154
155 <ul>
156   <li>...</li>
157 </ul>
158
159 </div>
160
161 <!--=========================================================================-->
162 <h3>
163 <a name="lldb">LLDB: Low Level Debugger</a>
164 </h3>
165
166 <div>
167
168 <p><a href="http://lldb.llvm.org">LLDB</a> is a ground-up implementation of a
169    command line debugger, as well as a debugger API that can be used from other
170    applications.  LLDB makes use of the Clang parser to provide high-fidelity
171    expression parsing (particularly for C++) and uses the LLVM JIT for target
172    support.</p>
173
174 <p>The 3.2 release has the following notable changes:</p>
175
176 <ul>
177   <li>...</li>
178 </ul>
179
180 </div>
181
182 <!--=========================================================================-->
183 <h3>
184 <a name="libc++">libc++: C++ Standard Library</a>
185 </h3>
186
187 <div>
188
189 <p>Like compiler_rt, libc++ is now <a href="DeveloperPolicy.html#license">dual
190    licensed</a> under the MIT and UIUC license, allowing it to be used more
191    permissively.</p>
192
193 <p>Within the LLVM 3.2 time-frame there were the following highlights:</p>
194
195 <ul>
196   <li>...</li>
197 </ul>
198
199 </div>
200
201 <!--=========================================================================-->
202 <h3>
203 <a name="vmkit">VMKit</a>
204 </h3>
205
206 <div>
207
208 <p>The <a href="http://vmkit.llvm.org/">VMKit project</a> is an implementation
209   of a Java Virtual Machine (Java VM or JVM) that uses LLVM for static and
210   just-in-time compilation.</p>
211
212 <p>The 3.2 release has the following notable changes:</p>
213
214 <ul>
215   <li>...</li>
216 </ul>
217
218 </div>
219
220
221 <!--=========================================================================-->
222 <h3>
223 <a name="Polly">Polly: Polyhedral Optimizer</a>
224 </h3>
225
226 <div>
227
228 <p><a href="http://polly.llvm.org/">Polly</a> is an <em>experimental</em>
229   optimizer for data locality and parallelism. It provides high-level
230   loop optimizations and automatic parallelisation.</p>
231
232 <p>Within the LLVM 3.2 time-frame there were the following highlights:</p>
233
234 <ul>
235   <li>isl, the integer set library used by Polly, was relicensed to the MIT
236 license</li>
237   <li>isl based code generation<br />
238         <ul>
239 <li>MIT licensed replacement for CLooG (LGPLv2) </li>
240 <li>Fine grained option handling (separation of
241 core and border computations, control overhead vs. code size) </li>
242 </li>
243 </ul>
244 <li>Support for FORTRAN and dragonegg</li>
245 <li>OpenMP code generation fixes</li>
246 </ul>
247
248
249 </div>
250
251 </div>
252
253 <!-- *********************************************************************** -->
254 <h2>
255   <a name="externalproj">External Open Source Projects Using LLVM 3.2</a>
256 </h2>
257 <!-- *********************************************************************** -->
258
259 <div>
260
261 <p>An exciting aspect of LLVM is that it is used as an enabling technology for
262    a lot of other language and tools projects. This section lists some of the
263    projects that have already been updated to work with LLVM 3.2.</p>
264
265 <h3>Crack</h3>
266
267 <div>
268
269 <p><a href="http://code.google.com/p/crack-language/">Crack</a> aims to provide
270    the ease of development of a scripting language with the performance of a
271    compiled language. The language derives concepts from C++, Java and Python,
272    incorporating object-oriented programming, operator overloading and strong
273    typing.</p>
274
275 </div>
276
277 <h3>FAUST</h3>
278
279 <div>
280
281 <p><a href="http://faust.grame.fr/">FAUST</a> is a compiled language for
282    real-time audio signal processing. The name FAUST stands for Functional
283    AUdio STream. Its programming model combines two approaches: functional
284    programming and block diagram composition. In addition with the C, C++, Java,
285    JavaScript output formats, the Faust compiler can generate LLVM bitcode, and
286    works with LLVM 2.7-3.1.</p>
287
288 </div>
289
290 <h3>Glasgow Haskell Compiler (GHC)</h3>
291
292 <div>
293
294 <p><a href="http://www.haskell.org/ghc/">GHC</a> is an open source compiler and
295    programming suite for Haskell, a lazy functional programming language. It
296    includes an optimizing static compiler generating good code for a variety of
297    platforms, together with an interactive system for convenient, quick
298    development.</p>
299
300 <p>GHC 7.0 and onwards include an LLVM code generator, supporting LLVM 2.8 and
301    later.</p>
302
303 </div>
304
305 <h3>Julia</h3>
306
307 <div>
308
309 <p><a href="https://github.com/JuliaLang/julia">Julia</a> is a high-level,
310    high-performance dynamic language for technical computing. It provides a
311    sophisticated compiler, distributed parallel execution, numerical accuracy,
312    and an extensive mathematical function library. The compiler uses type
313    inference to generate fast code without any type declarations, and uses
314    LLVM's optimization passes and JIT compiler. The
315    <a href="http://julialang.org/"> Julia Language</a> is designed
316    around multiple dispatch, giving programs a large degree of flexibility. It
317    is ready for use on many kinds of problems.</p>
318
319 </div>
320
321 <h3>LLVM D Compiler</h3>
322
323 <div>
324
325 <p><a href="https://github.com/ldc-developers/ldc">LLVM D Compiler</a> (LDC) is
326    a compiler for the D programming Language. It is based on the DMD frontend
327    and uses LLVM as backend.</p>
328
329 </div>
330
331 <h3>Open Shading Language</h3>
332
333 <div>
334
335 <p><a href="https://github.com/imageworks/OpenShadingLanguage/">Open Shading
336    Language (OSL)</a> is a small but rich language for programmable shading in
337    advanced global illumination renderers and other applications, ideal for
338    describing materials, lights, displacement, and pattern generation. It uses
339    LLVM to JIT complex shader networks to x86 code at runtime.</p>
340
341 <p>OSL was developed by Sony Pictures Imageworks for use in its in-house
342    renderer used for feature film animation and visual effects, and is
343    distributed as open source software with the "New BSD" license.</p>
344
345 </div>
346
347 <h3>Portable OpenCL (pocl)</h3>
348
349 <div>
350
351 <p>In addition to producing an easily portable open source OpenCL
352    implementation, another major goal of <a href="http://pocl.sourceforge.net/">
353    pocl</a> is improving performance portability of OpenCL programs with
354    compiler optimizations, reducing the need for target-dependent manual
355    optimizations. An important part of pocl is a set of LLVM passes used to
356    statically parallelize multiple work-items with the kernel compiler, even in
357    the presence of work-group barriers. This enables static parallelization of
358    the fine-grained static concurrency in the work groups in multiple ways
359    (SIMD, VLIW, superscalar,...).</p>
360
361 </div>
362
363 <h3>Pure</h3>
364
365 <div>
366
367 <p><a href="http://pure-lang.googlecode.com/">Pure</a> is an
368    algebraic/functional programming language based on term rewriting. Programs
369    are collections of equations which are used to evaluate expressions in a
370    symbolic fashion. The interpreter uses LLVM as a backend to JIT-compile Pure
371    programs to fast native code. Pure offers dynamic typing, eager and lazy
372    evaluation, lexical closures, a hygienic macro system (also based on term
373    rewriting), built-in list and matrix support (including list and matrix
374    comprehensions) and an easy-to-use interface to C and other programming
375    languages (including the ability to load LLVM bitcode modules, and inline C,
376    C++, Fortran and Faust code in Pure programs if the corresponding
377    LLVM-enabled compilers are installed).</p>
378
379 <p>Pure version 0.54 has been tested and is known to work with LLVM 3.1 (and
380    continues to work with older LLVM releases >= 2.5).</p>
381
382 </div>
383
384 <h3>TTA-based Co-design Environment (TCE)</h3>
385
386 <div>
387
388 <p><a href="http://tce.cs.tut.fi/">TCE</a> is a toolset for designing
389    application-specific processors (ASP) based on the Transport triggered
390    architecture (TTA). The toolset provides a complete co-design flow from C/C++
391    programs down to synthesizable VHDL/Verilog and parallel program binaries.
392    Processor customization points include the register files, function units,
393    supported operations, and the interconnection network.</p>
394
395 <p>TCE uses Clang and LLVM for C/C++ language support, target independent
396    optimizations and also for parts of code generation. It generates new
397    LLVM-based code generators "on the fly" for the designed TTA processors and
398    loads them in to the compiler backend as runtime libraries to avoid
399    per-target recompilation of larger parts of the compiler chain.</p>
400
401 </div>
402
403 </div>
404
405 <!-- *********************************************************************** -->
406 <h2>
407   <a name="whatsnew">What's New in LLVM 3.2?</a>
408 </h2>
409 <!-- *********************************************************************** -->
410
411 <div>
412
413 <p>This release includes a huge number of bug fixes, performance tweaks and
414    minor improvements. Some of the major improvements and new features are
415    listed in this section.</p>
416
417 <!--=========================================================================-->
418 <h3>
419 <a name="majorfeatures">Major New Features</a>
420 </h3>
421
422 <div>
423
424   <!-- Features that need text if they're finished for 3.2:
425    ARM EHABI
426    combiner-aa?
427    strong phi elim
428    loop dependence analysis
429    CorrelatedValuePropagation
430    lib/Transforms/IPO/MergeFunctions.cpp => consider for 3.2.
431    Integrated assembler on by default for arm/thumb?
432
433    -->
434
435   <!-- Near dead:
436    Analysis/RegionInfo.h + Dom Frontiers
437    SparseBitVector: used in LiveVar.
438    llvm/lib/Archive - replace with lib object?
439    -->
440
441 <p>LLVM 3.2 includes several major changes and big features:</p>
442
443 <ul>
444   <li>...</li>
445   <li>New NVPTX back-end (replacing existing PTX back-end) based on NVIDIA
446       sources</li>
447 </ul>
448
449 </div>
450
451
452 <!--=========================================================================-->
453 <h3>
454 <a name="coreimprovements">LLVM IR and Core Improvements</a>
455 </h3>
456
457 <div>
458
459 <p>LLVM IR has several new features for better support of new targets and that
460    expose new optimization opportunities:</p>
461
462 <ul>
463   <li>Thread local variables may have a specified TLS model. See the
464   <a href="LangRef.html#globalvars">Language Reference Manual</a>.</li>
465   <li>...</li>
466 </ul>
467
468 </div>
469
470 <!--=========================================================================-->
471 <h3>
472 <a name="optimizer">Optimizer Improvements</a>
473 </h3>
474
475 <div>
476
477 <p>In addition to many minor performance tweaks and bug fixes, this release
478    includes a few major enhancements and additions to the optimizers:</p>
479
480 <p> Loop Vectorizer - We've added a loop vectorizer and we are now able to
481     vectorize small loops. The loop vectorizer is disabled by default and
482     can be enabled using the <b>-mllvm -vectorize-loops</b> flag.
483     The SIMD vector width can be specified using the flag
484     <b>-mllvm -force-vector-width=4</b>.
485     The default value is <b>0</b> which means auto-select.
486     <br/>
487     We can now vectorize this function:
488
489     <pre class="doc_code">
490     unsigned sum_arrays(int *A, int *B, int start, int end) {
491       unsigned sum = 0;
492       for (int i = start; i &lt; end; ++i)
493         sum += A[i] + B[i] + i;
494
495       return sum;
496     }
497     </pre>
498
499     We vectorize under the following loops:
500     <ul>
501     <li>The inner most loops must have a single basic block.</li>
502     <li>The number of iterations are known before the loop starts to execute.</li>
503     <li>The loop counter needs to be incremented by one.</li>
504     <li>The loop trip count <b>can</b> be a variable.</li>
505     <li>Loops do <b>not</b> need to start at zero.</li>
506     <li>The induction variable can be used inside the loop.</li>
507     <li>Loop reductions are supported.</li>
508     <li>Arrays with affine access pattern do <b>not</b> need to be marked as 'noalias' and are checked at runtime.</li>
509     <li>...</li>
510     </ul>
511
512 </p>
513
514 <p>SROA - We've re-written SROA to be significantly more powerful.
515 <!-- FIXME: Add more text here... --></p>
516
517 <ul>
518   <li>Branch weight metadata is preseved through more of the optimizer.</li>
519   <li>...</li>
520 </ul>
521
522 </div>
523
524 <!--=========================================================================-->
525 <h3>
526 <a name="mc">MC Level Improvements</a>
527 </h3>
528
529 <div>
530
531 <p>The LLVM Machine Code (aka MC) subsystem was created to solve a number of
532    problems in the realm of assembly, disassembly, object file format handling,
533    and a number of other related areas that CPU instruction-set level tools work
534    in. For more information, please see the
535    <a href="http://blog.llvm.org/2010/04/intro-to-llvm-mc-project.html">Intro
536    to the LLVM MC Project Blog Post</a>.</p>
537
538 <ul>
539   <li>...</li>
540 </ul>
541
542 </div>
543
544 <!--=========================================================================-->
545 <h3>
546 <a name="codegen">Target Independent Code Generator Improvements</a>
547 </h3>
548
549 <div>
550
551 <p>Stack Coloring - We have implemented a new optimization pass
552   to merge stack objects which are used in disjoin areas of the code.
553   This optimization reduces the required stack space significantly, in cases
554   where it is clear to the optimizer that the stack slot is not shared.
555   We use the lifetime markers to tell the codegen that a certain alloca
556   is used within a region.</p>
557
558 <p> We now merge consecutive loads and stores. </p>
559
560 <p>We have put a significant amount of work into the code generator
561    infrastructure, which allows us to implement more aggressive algorithms and
562    make it run faster:</p>
563
564 <ul>
565   <li>...</li>
566 </ul>
567
568 <p> We added new TableGen infrastructure to support bundling for
569     Very Long Instruction Word (VLIW) architectures. TableGen can now
570     automatically generate a deterministic finite automaton from a VLIW
571     target's schedule description which can be queried to determine
572     legal groupings of instructions in a bundle.</p>
573
574 <p> We have added a new target independent VLIW packetizer based on the
575     DFA infrastructure to group machine instructions into bundles.</p>
576
577 </div>
578
579 <h4>
580 <a name="blockplacement">Basic Block Placement</a>
581 </h4>
582
583 <div>
584
585 <p>A probability based block placement and code layout algorithm was added to
586    LLVM's code generator. This layout pass supports probabilities derived from
587    static heuristics as well as source code annotations such as
588    <code>__builtin_expect</code>.</p>
589
590 </div>
591
592 <!--=========================================================================-->
593 <h3>
594 <a name="x86">X86-32 and X86-64 Target Improvements</a>
595 </h3>
596
597 <div>
598
599 <p>New features and major changes in the X86 target include:</p>
600
601 <ul>
602   <li>...</li>
603 </ul>
604
605 </div>
606
607 <!--=========================================================================-->
608 <h3>
609 <a name="ARM">ARM Target Improvements</a>
610 </h3>
611
612 <div>
613
614 <p>New features of the ARM target include:</p>
615
616 <ul>
617   <li>...</li>
618 </ul>
619
620 <!--_________________________________________________________________________-->
621
622 <h4>
623 <a name="armintegratedassembler">ARM Integrated Assembler</a>
624 </h4>
625
626 <div>
627
628 <p>The ARM target now includes a full featured macro assembler, including
629    direct-to-object module support for clang. The assembler is currently enabled
630    by default for Darwin only pending testing and any additional necessary
631    platform specific support for Linux.</p>
632
633 <p>Full support is included for Thumb1, Thumb2 and ARM modes, along with
634    subtarget and CPU specific extensions for VFP2, VFP3 and NEON.</p>
635
636 <p>The assembler is Unified Syntax only (see ARM Architecural Reference Manual
637    for details). While there is some, and growing, support for pre-unfied
638    (divided) syntax, there are still significant gaps in that support.</p>
639
640 </div>
641
642 </div>
643
644 <!--=========================================================================-->
645 <h3>
646 <a name="MIPS">MIPS Target Improvements</a>
647 </h3>
648
649 <div>
650
651 <p>New features and major changes in the MIPS target include:</p>
652
653 <ul>
654   <li>...</li>
655 </ul>
656
657 </div>
658
659 <!--=========================================================================-->
660 <h3>
661 <a name="PowerPC">PowerPC Target Improvements</a>
662 </h3>
663
664 <div>
665
666 <ul>
667 <p>Many fixes and changes across LLVM (and Clang) for better compliance with
668    the 64-bit PowerPC ELF Application Binary Interface, interoperability with
669    GCC, and overall 64-bit PowerPC support.   Some highlights include:</p>
670 <ul>
671   <li>  MCJIT support added.</li>
672   <li>  PPC64 relocation support and (small code model) TOC handling
673         added.</li>
674   <li>  Parameter passing and return value fixes (alignment issues,
675         padding, varargs support, proper register usage, odd-sized
676         structure support, float support, extension of return values
677         for i32 return values).</li>
678   <li>  Fixes in spill and reload code for vector registers.</li>
679   <li>  C++ exception handling enabled.</li>
680   <li>  Changes to remediate double-rounding compatibility issues with
681         respect to GCC behavior.</li>
682   <li>  Refactoring to disentangle ppc64-elf-linux ABI from Darwin
683         ppc64 ABI support.</li>
684   <li>  Assorted new test cases and test case fixes (endian and word
685         size issues).</li>
686   <li>  Fixes for big-endian codegen bugs, instruction encodings, and
687         instruction constraints.</li>
688   <li>  Implemented -integrated-as support.</li>
689   <li>  Additional support for Altivec compare operations.</li>
690   <li>  IBM long double support.</li>
691 </ul>
692 <p>There have also been code generation improvements for both 32- and 64-bit
693    code. Instruction scheduling support for the Freescale e500mc and e5500
694    cores has been added.</p>
695 </ul>
696
697 </div>
698
699 <!--=========================================================================-->
700 <h3>
701 <a name="NVPTX">PTX/NVPTX Target Improvements</a>
702 </h3>
703
704 <div>
705
706 <p>The PTX back-end has been replaced by the NVPTX back-end, which is based on
707    the LLVM back-end used by NVIDIA in their CUDA (nvcc) and OpenCL compiler.
708    Some highlights include:</p>
709 <ul>
710   <li>Compatibility with PTX 3.1 and SM 3.5</li>
711   <li>Support for NVVM intrinsics as defined in the NVIDIA Compiler SDK</li>
712   <li>Full compatibility with old PTX back-end, with much greater coverage of
713       LLVM IR</li>
714 </ul>
715
716 <p>Please submit any back-end bugs to the LLVM Bugzilla site.</p>
717
718 </div>
719
720 <!--=========================================================================-->
721 <h3>
722 <a name="OtherTS">Other Target Specific Improvements</a>
723 </h3>
724
725 <div>
726
727 <ul>
728   <li>...</li>
729 </ul>
730
731 </div>
732
733 <!--=========================================================================-->
734 <h3>
735 <a name="changes">Major Changes and Removed Features</a>
736 </h3>
737
738 <div>
739
740 <p>If you're already an LLVM user or developer with out-of-tree changes based on
741    LLVM 3.2, this section lists some "gotchas" that you may run into upgrading
742    from the previous release.</p>
743
744 <ul>
745   <li>The CellSPU port has been removed. It can still be found in older
746       versions.</li>
747   <li>...</li>
748 </ul>
749
750 </div>
751
752 <!--=========================================================================-->
753 <h3>
754 <a name="api_changes">Internal API Changes</a>
755 </h3>
756
757 <div>
758
759 <p>In addition, many APIs have changed in this release.  Some of the major
760    LLVM API changes are:</p>
761
762 <p> We've added a new interface for allowing IR-level passes to access
763   target-specific information. A new IR-level pass, called
764   "TargetTransformInfo" provides a number of low-level interfaces.
765   LSR and LowerInvoke already use the new interface. </p>
766
767 <p> The TargetData structure has been renamed to DataLayout and moved to VMCore
768 to remove a dependency on Target. </p>
769
770 <ul>
771   <li>...</li>
772 </ul>
773
774 </div>
775
776 <!--=========================================================================-->
777 <h3>
778 <a name="tools_changes">Tools Changes</a>
779 </h3>
780
781 <div>
782
783 <p>In addition, some tools have changed in this release. Some of the changes
784    are:</p>
785
786 <ul>
787   <li>...</li>
788 </ul>
789
790 </div>
791
792
793 <!--=========================================================================-->
794 <h3>
795 <a name="python">Python Bindings</a>
796 </h3>
797
798 <div>
799
800 <p>Officially supported Python bindings have been added! Feature support is far
801    from complete. The current bindings support interfaces to:</p>
802
803 <ul>
804   <li>...</li>
805 </ul>
806
807 </div>
808
809 </div>
810
811 <!-- *********************************************************************** -->
812 <h2>
813   <a name="knownproblems">Known Problems</a>
814 </h2>
815 <!-- *********************************************************************** -->
816
817 <div>
818
819 <p>LLVM is generally a production quality compiler, and is used by a broad range
820    of applications and shipping in many products.  That said, not every
821    subsystem is as mature as the aggregate, particularly the more obscure
822    targets.  If you run into a problem, please check
823    the <a href="http://llvm.org/bugs/">LLVM bug database</a> and submit a bug if
824    there isn't already one or ask on
825    the <a href="http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev">LLVMdev
826    list</a>.</p>
827
828   <p>Known problem areas include:</p>
829
830 <ul>
831   <li>The CellSPU, MSP430, and XCore backends are experimental.</li>
832
833   <li>The integrated assembler, disassembler, and JIT is not supported by
834       several targets. If an integrated assembler is not supported, then a
835       system assembler is required.  For more details, see the <a
836       href="CodeGenerator.html#targetfeatures">Target Features Matrix</a>.
837   </li>
838 </ul>
839
840 </div>
841
842 <!-- *********************************************************************** -->
843 <h2>
844   <a name="additionalinfo">Additional Information</a>
845 </h2>
846 <!-- *********************************************************************** -->
847
848 <div>
849
850 <p>A wide variety of additional information is available on
851    the <a href="http://llvm.org/">LLVM web page</a>, in particular in
852    the <a href="http://llvm.org/docs/">documentation</a> section.  The web page
853    also contains versions of the API documentation which is up-to-date with the
854    Subversion version of the source code.  You can access versions of these
855    documents specific to this release by going into the "<tt>llvm/doc/</tt>"
856    directory in the LLVM tree.</p>
857
858 <p>If you have any questions or comments about LLVM, please feel free to contact
859    us via the <a href="http://llvm.org/docs/#maillist"> mailing lists</a>.</p>
860
861 </div>
862
863 <!-- *********************************************************************** -->
864
865 <hr>
866 <address>
867   <a href="http://jigsaw.w3.org/css-validator/check/referer"><img
868   src="http://jigsaw.w3.org/css-validator/images/vcss-blue" alt="Valid CSS"></a>
869   <a href="http://validator.w3.org/check/referer"><img
870   src="http://www.w3.org/Icons/valid-html401-blue" alt="Valid HTML 4.01"></a>
871
872   <a href="http://llvm.org/">LLVM Compiler Infrastructure</a><br>
873   Last modified: $Date$
874 </address>
875
876 </body>
877 </html>