5f998b3f52b819374cdb5da7c5c0c6596670e495
[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.1 Release Notes</title>
8 </head>
9 <body>
10
11 <h1>LLVM 3.1 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.1</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.1
33 release.<br>
34 You may prefer the
35 <a href="http://llvm.org/releases/3.0/docs/ReleaseNotes.html">LLVM 3.0
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.1.  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.
50    All LLVM releases may be downloaded from
51    the <a href="http://llvm.org/releases/">LLVM 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.1 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
78    addition to this code, the LLVM Project includes other sub-projects that are
79    in development.  Here we 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.1 time-frame, the Clang team has made many improvements:</p>
98 <ul>
99   <li>C++11 support is greatly expanded including lambdas, initializer lists, constexpr, user-defined literals, and atomics.</li>
100   <li>...</li>
101 </ul>
102
103   <p>For more details about the changes to Clang since the 2.9 release, see the
104 <a href="http://clang.llvm.org/docs/ReleaseNotes.html">Clang release notes</a>
105 </p>
106
107
108 <p>If Clang rejects your code but another compiler accepts it, please take a
109    look at the <a href="http://clang.llvm.org/compatibility.html">language
110    compatibility</a> guide to make sure this is not intentional or a known
111    issue.</p>
112
113 </div>
114
115 <!--=========================================================================-->
116 <h3>
117 <a name="dragonegg">DragonEgg: GCC front-ends, LLVM back-end</a>
118 </h3>
119
120 <div>
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.1 release has the following notable changes:</p>
130
131   <ul>
132
133   <li>Partial support for gcc-4.7. Ada support is poor, but other languages work
134       fairly well.</li>
135
136   <li>Support for ARM processors. Some essential gcc headers that are needed to
137       build DragonEgg for ARM are not installed by gcc. To work around this,
138       copy the missing headers from the gcc source tree.</li>
139
140   <li>Better optimization for Fortran by exploiting the fact that Fortran scalar
141       arguments have 'restrict' semantics.</li>
142
143   <li>Better optimization for all languages by passing information about type
144       aliasing and type ranges to the LLVM optimizers.</li>
145
146   <li>A regression test-suite was added.</li>
147
148 </ul>
149
150 </div>
151
152 <!--=========================================================================-->
153 <h3>
154 <a name="compiler-rt">compiler-rt: Compiler Runtime Library</a>
155 </h3>
156
157 <div>
158
159 <p>The new LLVM <a href="http://compiler-rt.llvm.org/">compiler-rt project</a>
160    is a simple library that provides an implementation of the low-level
161    target-specific hooks required by code generation and other runtime
162    components.  For example, when compiling for a 32-bit target, converting a
163    double to a 64-bit unsigned integer is compiled into a runtime call to the
164    "__fixunsdfdi" function. The compiler-rt library provides highly optimized
165    implementations of this and other low-level routines (some are 3x faster than
166    the equivalent libgcc routines).</p>
167
168 <p>....</p>
169
170 </div>
171
172 <!--=========================================================================-->
173 <h3>
174 <a name="lldb">LLDB: Low Level Debugger</a>
175 </h3>
176
177 <div>
178
179 <p>LLDB is a ground-up implementation of a command line debugger, as well as a
180    debugger API that can be used from other applications.  LLDB makes use of the
181    Clang parser to provide high-fidelity expression parsing (particularly for
182    C++) and uses the LLVM JIT for target support.</p>
183
184 <p>...</p>
185
186 </div>
187
188 <!--=========================================================================-->
189 <h3>
190 <a name="libc++">libc++: C++ Standard Library</a>
191 </h3>
192
193 <div>
194
195 <p>Like compiler_rt, libc++ is now <a href="DeveloperPolicy.html#license">dual
196    licensed</a> under the MIT and UIUC license, allowing it to be used more
197    permissively.</p>
198
199 <p>...</p>
200
201 </div>
202
203 <!--=========================================================================-->
204 <h3>
205 <a name="vmkit">VMKit</a>
206 </h3>
207
208 <div>
209
210   <p>The <a href="http://vmkit.llvm.org/">VMKit project</a> is an
211   implementation of a Java Virtual Machine (Java VM or JVM) that uses LLVM for
212   static and just-in-time compilation.
213
214   <p>In the LLVM 3.1 time-frame, VMKit has had significant improvements on both
215   runtime and startup performance:</p>
216
217   <ul>
218   <li>...</li>
219   </ul>
220
221 </div>
222
223
224 <!--=========================================================================-->
225 <h3>
226 <a name="Polly">Polly: Polyhedral Optimizer</a>
227 </h3>
228
229 <div>
230
231   <p><a href="http://polly.llvm.org/">Polly</a> is an <em>experimental</em>
232   optimizer for data locality and parallelism. It currently provides high-level
233   loop optimizations and automatic parallelisation (using the OpenMP run time).
234   Work in the area of automatic SIMD and accelerator code generation was
235   started.
236
237   <p>Within the LLVM 3.1 time-frame there were the following highlights:</p>
238
239   <ul>
240   <li>Polly became an official LLVM project</li>
241   <li>Polly can be loaded directly into clang (Enabled by '-O3 -mllvm -polly'
242   )</li>
243   <li>An automatic scheduling optimizer (derived from <a
244   href="http://pluto-compiler.sourceforge.net/">Pluto</a>) was integrated. It
245   performs loop transformations to optimize for data-locality and parallelism.
246   The transformations include, but are not limited to interchange, fusion,
247   fission, skewing and tiling.
248   </li>
249   </ul>
250
251 </div>
252
253 </div>
254
255 <!-- *********************************************************************** -->
256 <h2>
257   <a name="externalproj">External Open Source Projects Using LLVM 3.1</a>
258 </h2>
259 <!-- *********************************************************************** -->
260
261 <div>
262
263 <p>An exciting aspect of LLVM is that it is used as an enabling technology for
264    a lot of other language and tools projects.  This section lists some of the
265    projects that have already been updated to work with LLVM 3.1.</p>
266
267 <h3>FAUST</h3>
268
269 <div>
270
271 <p>FAUST is a compiled language for real-time audio signal processing. The name
272    FAUST stands for Functional AUdio STream. Its programming model combines two
273    approaches: functional programming and block diagram composition. In addition
274    with the C, C++, Java, JavaScript output formats, the Faust compiler can
275    generate LLVM bitcode, and works with LLVM 2.7-3.1.</p>
276
277 </div>
278
279 <h3>Glasgow Haskell Compiler (GHC)</h3>
280
281 <div>
282
283 <p>GHC is an open source compiler and programming suite for Haskell, a lazy
284    functional programming language. It includes an optimizing static compiler
285    generating good code for a variety of platforms, together with an interactive
286    system for convenient, quick development.</p>
287
288 <p>GHC 7.0 and onwards include an LLVM code generator, supporting LLVM 2.8 and
289    later.</p>
290
291 </div>
292
293 <h3>Open Shading Language</h3>
294
295 <div>
296
297 <p>Open Shading Language (OSL) is a small but rich language for programmable
298    shading in advanced global illumination renderers and other applications,
299    ideal for describing materials, lights, displacement, and pattern
300    generation. It uses LLVM to JIT complex shader networks to x86 code at
301    runtime.</p>
302
303 <p>OSL was developed by Sony Pictures Imageworks for use in its in-house
304    renderer used for feature film animation and visual effects, and is
305    distributed as open source software with the "New BSD" license. Its project
306    home page is:
307  <a href"http://github.com/imageworks/OpenShadingLanguage/">http://github.com/imageworks/OpenShadingLanguage/</a></p>
308
309 </div>
310
311 <h3>Pure</h3>
312
313 <div>
314
315 <p><a href="http://pure-lang.googlecode.com/">Pure</a> is an
316    algebraic/functional programming language based on term rewriting. Programs
317    are collections of equations which are used to evaluate expressions in a
318    symbolic fashion. The interpreter uses LLVM as a backend to JIT-compile Pure
319    programs to fast native code. Pure offers dynamic typing, eager and lazy
320    evaluation, lexical closures, a hygienic macro system (also based on term
321    rewriting), built-in list and matrix support (including list and matrix
322    comprehensions) and an easy-to-use interface to C and other programming
323    languages (including the ability to load LLVM bitcode modules, and inline C,
324    C++, Fortran and Faust code in Pure programs if the corresponding
325    LLVM-enabled compilers are installed).</p>
326
327 <p>Pure version 0.54 has been tested and is known to work with LLVM 3.1 (and
328    continues to work with older LLVM releases >= 2.5).</p>
329
330 </div>
331
332 </div>
333
334 <!-- *********************************************************************** -->
335 <h2>
336   <a name="whatsnew">What's New in LLVM 3.1?</a>
337 </h2>
338 <!-- *********************************************************************** -->
339
340 <div>
341
342 <p>This release includes a huge number of bug fixes, performance tweaks and
343    minor improvements.  Some of the major improvements and new features are
344    listed in this section.</p>
345
346 <!--=========================================================================-->
347 <h3>
348 <a name="majorfeatures">Major New Features</a>
349 </h3>
350
351 <div>
352
353   <!-- Features that need text if they're finished for 3.1:
354    ARM EHABI
355    combiner-aa?
356    strong phi elim
357    loop dependence analysis
358    CorrelatedValuePropagation
359    lib/Transforms/IPO/MergeFunctions.cpp => consider for 3.1.
360    Integrated assembler on by default for arm/thumb?
361
362    -->
363
364   <!-- Near dead:
365    Analysis/RegionInfo.h + Dom Frontiers
366    SparseBitVector: used in LiveVar.
367    llvm/lib/Archive - replace with lib object?
368    -->
369
370 <p>LLVM 3.1 includes several major changes and big features:</p>
371
372 <ul>
373   <li><a href="../tools/clang/docs/AddressSanitizer.html">AddressSanitizer</a>,
374       a fast memory error detector.</li>
375   <li><a href="CodeGenerator.html#machineinstrbundle">MachineInstr Bundles</a>,
376       Support to model instruction bundling / packing.</li>
377   <li><a href="#armintegratedassembler">ARM Integrated Assembler</a>,
378       A full featured assembler and direct-to-object support for ARM.</li>
379   <li><a href="#blockplacement">Basic Block Placement</a>
380       Probability driven basic block placement.</li>
381   <li>....</li>
382 </ul>
383
384 </div>
385
386
387 <!--=========================================================================-->
388 <h3>
389 <a name="coreimprovements">LLVM IR and Core Improvements</a>
390 </h3>
391
392 <div>
393
394 <p>LLVM IR has several new features for better support of new targets and that
395    expose new optimization opportunities:</p>
396
397   <ul>
398     <li>IR support for half float</li>
399     <li>IR support for vectors of pointers, including vector GEPs.</li>
400     <li>Module flags have been introduced. They convey information about the
401         module as a whole to LLVM subsystems.</li>
402     <li>Loads can now have range metadata attached to them to describe the
403         possible values being loaded.</li>
404     <li>Inline cost heuristics have been completely overhauled and now closely
405         model constant propagation through call sites, disregard trivially dead
406         code costs, and can model C++ STL iterator patterns.</li>
407     <li>....</li>
408   </ul>
409 </div>
410
411 <!--=========================================================================-->
412 <h3>
413 <a name="optimizer">Optimizer Improvements</a>
414 </h3>
415
416 <div>
417
418 <p>In addition to many minor performance tweaks and bug fixes, this
419    release includes a few major enhancements and additions to the
420    optimizers:</p>
421
422 <ul>
423   <li>The loop unroll pass now is able to unroll loops with run-time trip counts.
424       This feature is turned off by default, and is enabled with the
425       <code>-unroll-runtime</code> flag.</li>
426   <li>A new basic-block autovectorization pass is available. Pass
427       <code>-vectorize</code> to run this pass along with some associated
428       post-vectorization cleanup passes. For more information, see the EuroLLVM
429       2012 slides: <a href="http://llvm.org/devmtg/2012-04-12/Slides/Hal_Finkel.pdf">
430       Autovectorization with LLVM</a>.</li>
431   <li>....</li>
432 </ul>
433
434 </div>
435
436 <!--=========================================================================-->
437 <h3>
438 <a name="mc">MC Level Improvements</a>
439 </h3>
440
441 <div>
442
443 <p>The LLVM Machine Code (aka MC) subsystem was created to solve a number of
444    problems in the realm of assembly, disassembly, object file format handling,
445    and a number of other related areas that CPU instruction-set level tools work
446    in. For more information, please see
447   the <a href="http://blog.llvm.org/2010/04/intro-to-llvm-mc-project.html">Intro
448     to the LLVM MC Project Blog Post</a>.</p>
449
450 <ul>
451   <li>....</li>
452 </ul>
453
454 </div>
455
456 <!--=========================================================================-->
457 <h3>
458 <a name="codegen">Target Independent Code Generator Improvements</a>
459 </h3>
460
461 <div>
462
463 <p>We have changed the way that the Type Legalizer legalizes vectors. The type
464    legalizer now attempts to promote integer elements.  This enabled the
465    implementation of vector-select.  Additionally, we see a performance boost on
466    workloads which use vectors of chars and shorts, since they are now promoted
467    to 32-bit types, which are better supported by the SIMD instruction set.
468    Floating point types are still widened as before.</p>
469
470
471 <p>We have put a significant amount of work into the code generator
472    infrastructure, which allows us to implement more aggressive algorithms and
473    make it run faster:</p>
474
475 <ul>
476   <li>TableGen can now synthesize register classes that are only needed to
477       represent combinations of constraints from instructions and sub-registers.
478       The synthetic register classes inherit most of their properties form their
479       closest user-defined super-class.</li>
480   <li><code>MachineRegisterInfo</code> now allows the reserved registers to be
481       frozen when register allocation starts.  Target hooks should use the
482       <code>MRI-&gt;canReserveReg(FramePtr)</code> method to avoid accidentally
483       disabling frame pointer elimination during register allocation.</li>
484   <li>A new kind of <code>MachineOperand</code> provides a compact
485       representation of large clobber lists on call instructions.  The register
486       mask operand references a bit mask of preserved registers. Everything else
487       is clobbered.</li>
488 </ul>
489
490 <p> We added new TableGen infrastructure to support bundling for
491     Very Long Instruction Word (VLIW) architectures. TableGen can now
492     automatically generate a deterministic finite automaton from a VLIW
493     target's schedule description which can be queried to determine
494     legal groupings of instructions in a bundle.</p>
495
496 <p> We have added a new target independent VLIW packetizer based on the
497     DFA infrastructure to group machine instructions into bundles.</p>
498
499 </div>
500
501 <h4>
502 <a name="blockplacement">Basic Block Placement</a>
503 </h4>
504 <div>
505 <p>A probability based block placement and code layout algorithm was added to
506 LLVM's code generator. This layout pass supports probabilities derived from
507 static heuristics as well as source code annotations such as
508 <code>__builtin_expect</code>.</p>
509 </div>
510
511 <!--=========================================================================-->
512 <h3>
513 <a name="x86">X86-32 and X86-64 Target Improvements</a>
514 </h3>
515
516 <div>
517
518 <p>New features and major changes in the X86 target include:</p>
519
520 <ul>
521   <li>Bug fixes and improved support for AVX1</li>
522   <li>Support for AVX2 (still incomplete at this point)</li>
523   <li>Call instructions use the new register mask operands for faster compile
524   times and better support for different calling conventions.  The old WINCALL
525   instructions are no longer needed.</li>
526   <li>DW2 Exception Handling is enabled on Cygwin and MinGW.</li>
527   <li>Support for implicit TLS model used with MS VC runtime</li>
528 </ul>
529
530 </div>
531
532 <!--=========================================================================-->
533 <h3>
534 <a name="ARM">ARM Target Improvements</a>
535 </h3>
536
537 <div>
538
539 <p>New features of the ARM target include:</p>
540
541 <ul>
542   <li>The constant island pass now supports basic block and constant pool entry
543   alignments greater than 4 bytes.</li>
544   <li>On Darwin, the ARM target now has a full-featured integrated assembler.
545   </li>
546 </ul>
547
548 <h4>
549 <a name="armintegratedassembler">ARM Integrated Assembler</a>
550 </h4>
551 <div>
552 <p>The ARM target now includes a full featured macro assembler, including
553 direct-to-object module support for clang. The assembler is currently enabled
554 by default for Darwin only pending testing and any additional necessary
555 platform specific support for Linux.</p>
556
557 <p>Full support is included for Thumb1, Thumb2 and ARM modes, along with
558 subtarget and CPU specific extensions for VFP2, VFP3 and NEON.</p>
559
560 <p>The assembler is Unified Syntax only (see ARM Architecural Reference Manual
561 for details). While there is some, and growing, support for pre-unfied (divided)
562 syntax, there are still significant gaps in that support.</p>
563 </div>
564
565 </div>
566 <!--=========================================================================-->
567 <h3>
568 <a name="MIPS">MIPS Target Improvements</a>
569 </h3>
570
571 <div>
572
573 <p>This release has seen major new work on just about every aspect of the MIPS
574   backend.  Some of the major new features include:</p>
575
576 <ul>
577   <li>....</li>
578 </ul>
579 </div>
580
581 <!--=========================================================================-->
582 <h3>
583 <a name="OtherTS">Other Target Specific Improvements</a>
584 </h3>
585
586 <div>
587
588 <p>Support for Qualcomm's Hexagon VLIW processor has been added.</p>
589
590 <ul>
591   <li>....</li>
592
593
594 </ul>
595
596 </div>
597
598 <!--=========================================================================-->
599 <h3>
600 <a name="changes">Major Changes and Removed Features</a>
601 </h3>
602
603 <div>
604
605 <p>If you're already an LLVM user or developer with out-of-tree changes based on
606    LLVM 3.1, this section lists some "gotchas" that you may run into upgrading
607    from the previous release.</p>
608
609 <ul>
610   <li>LLVM 3.1 removes support for reading LLVM 2.9 bitcode files. Going
611       forward, we aim for all future versions of LLVM to read bitcode files and
612       <tt>.ll</tt> files produced by LLVM 3.0 and later.</li>
613   <li>The <tt>unwind</tt> instruction is now gone. With the introduction of the
614       new exception handling system in LLVM 3.0, the <tt>unwind</tt> instruction
615       became obsolete.</li>
616   <li>LLVM 3.0 and earlier automatically added the returns_twice fo functions
617       like setjmp based on the name. This functionality was removed in 3.1.
618       This affects Clang users, if -ffreestanding is used.</li>
619   <li>....</li>
620 </ul>
621
622 </div>
623
624 <!--=========================================================================-->
625 <h3>
626 <a name="api_changes">Internal API Changes</a>
627 </h3>
628
629 <div>
630
631 <p>In addition, many APIs have changed in this release.  Some of the major
632    LLVM API changes are:</p>
633
634 <ul>
635   <li>Target specific options have been moved from global variables to members
636       on the new <code>TargetOptions</code> class, which is local to each
637       <code>TargetMachine</code>. As a consequence, the associated flags will
638       no longer be accepted by <tt>clang -mllvm</tt>. This includes:
639 <ul>
640 <li><code>llvm::PrintMachineCode</code></li>
641 <li><code>llvm::NoFramePointerElim</code></li>
642 <li><code>llvm::NoFramePointerElimNonLeaf</code></li>
643 <li><code>llvm::DisableFramePointerElim(const MachineFunction &)</code></li>
644 <li><code>llvm::LessPreciseFPMADOption</code></li>
645 <li><code>llvm::LessPrecideFPMAD()</code></li>
646 <li><code>llvm::NoExcessFPPrecision</code></li>
647 <li><code>llvm::UnsafeFPMath</code></li>
648 <li><code>llvm::NoInfsFPMath</code></li>
649 <li><code>llvm::NoNaNsFPMath</code></li>
650 <li><code>llvm::HonorSignDependentRoundingFPMathOption</code></li>
651 <li><code>llvm::HonorSignDependentRoundingFPMath()</code></li>
652 <li><code>llvm::UseSoftFloat</code></li>
653 <li><code>llvm::FloatABIType</code></li>
654 <li><code>llvm::NoZerosInBSS</code></li>
655 <li><code>llvm::JITExceptionHandling</code></li>
656 <li><code>llvm::JITEmitDebugInfo</code></li>
657 <li><code>llvm::JITEmitDebugInfoToDisk</code></li>
658 <li><code>llvm::GuaranteedTailCallOpt</code></li>
659 <li><code>llvm::StackAlignmentOverride</code></li>
660 <li><code>llvm::RealignStack</code></li>
661 <li><code>llvm::DisableJumpTables</code></li>
662 <li><code>llvm::EnableFastISel</code></li>
663 <li><code>llvm::getTrapFunctionName()</code></li>
664 <li><code>llvm::EnableSegmentedStacks</code></li>
665 </ul></li>
666   <li>The MDBuilder class has been added to simplify the creation of
667       metadata.</li>
668   <li>....</li>
669 </ul>
670
671 </div>
672
673 <!--=========================================================================-->
674 <h3>
675 <a name="tools_changes">Tools Changes</a>
676 </h3>
677
678 <div>
679
680 <p>In addition, some tools have changed in this release. Some of the changes
681    are:</p>
682
683
684 <ul>
685   <li>llvm-stress is a command line tool for generating random .ll files to fuzz
686       different LLVM components. </li>
687   <li>llvm-ld has been removed.  Use llvm-link or Clang instead.</li>
688   <li>....</li>
689 </ul>
690
691 <ul>
692   <li>....</li>
693 </ul>
694
695 </div>
696
697
698 <!--=========================================================================-->
699 <h3>
700 <a name="python">Python Bindings</a>
701 </h3>
702
703 <div>
704
705 <p>Officially supported Python bindings have been added! Feature support is far
706 from complete. The current bindings support interfaces to:</p>
707 <ul>
708   <li>Object File Interface</li>
709   <li>Disassembler</li>
710 </ul>
711
712 <p>Using the Object File Interface, it is possible to inspect binary object files.
713 Think of it as a Python version of readelf or llvm-objdump.</p>
714
715 <p>Support for additional features is currently being developed by community
716 contributors. If you are interested in shaping the direction of the Python
717 bindings, please express your intent on IRC or the developers list.</p>
718
719 </div>
720
721 </div>
722
723 <!-- *********************************************************************** -->
724 <h2>
725   <a name="knownproblems">Known Problems</a>
726 </h2>
727 <!-- *********************************************************************** -->
728
729 <div>
730
731 <p>LLVM is generally a production quality compiler, and is used by a broad range
732    of applications and shipping in many products.  That said, not every
733    subsystem is as mature as the aggregate, particularly the more obscure
734    targets.  If you run into a problem, please check the <a
735    href="http://llvm.org/bugs/">LLVM bug database</a> and submit a bug if
736    there isn't already one or ask on the <a
737     href="http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev">LLVMdev
738     list</a>.</p>
739
740   <p>Known problem areas include:</p>
741
742 <ul>
743   <li>The Alpha, Blackfin, CellSPU, MSP430, PTX, SystemZ and
744       XCore backends are experimental, and the Alpha, Blackfin and SystemZ
745       targets have already been removed from mainline.</li>
746
747   <li>The integrated assembler, disassembler, and JIT is not supported by
748       several targets.  If an integrated assembler is not supported, then a
749       system assembler is required.  For more details, see the <a
750       href="CodeGenerator.html#targetfeatures">Target Features Matrix</a>.
751   </li>
752
753   <li>The C backend has numerous problems and is not being actively maintained.
754     Depending on it for anything serious is not advised.</li>
755 </ul>
756
757 </div>
758
759 <!-- *********************************************************************** -->
760 <h2>
761   <a name="additionalinfo">Additional Information</a>
762 </h2>
763 <!-- *********************************************************************** -->
764
765 <div>
766
767 <p>A wide variety of additional information is available on
768    the <a href="http://llvm.org/">LLVM web page</a>, in particular in
769    the <a href="http://llvm.org/docs/">documentation</a> section.  The web page
770    also contains versions of the API documentation which is up-to-date with the
771    Subversion version of the source code.  You can access versions of these
772    documents specific to this release by going into the "<tt>llvm/doc/</tt>"
773    directory in the LLVM tree.</p>
774
775 <p>If you have any questions or comments about LLVM, please feel free to contact
776    us via the <a href="http://llvm.org/docs/#maillist"> mailing lists</a>.</p>
777
778 </div>
779
780 <!-- *********************************************************************** -->
781
782 <hr>
783 <address>
784   <a href="http://jigsaw.w3.org/css-validator/check/referer"><img
785   src="http://jigsaw.w3.org/css-validator/images/vcss-blue" alt="Valid CSS"></a>
786   <a href="http://validator.w3.org/check/referer"><img
787   src="http://www.w3.org/Icons/valid-html401-blue" alt="Valid HTML 4.01"></a>
788
789   <a href="http://llvm.org/">LLVM Compiler Infrastructure</a><br>
790   Last modified: $Date$
791 </address>
792
793 </body>
794 </html>