test/CodeGen/Hexagon/postinc-load.ll: Suppress it for now. It triggered the failure...
[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 currently provides high-level
230   loop optimizations and automatic parallelisation (using the OpenMP run time).
231   Work in the area of automatic SIMD and accelerator code generation was
232   started.</p>
233
234 <p>Within the LLVM 3.2 time-frame there were the following highlights:</p>
235
236 <ul>
237   <li>...</li>
238 </ul>
239
240 </div>
241
242 </div>
243
244 <!-- *********************************************************************** -->
245 <h2>
246   <a name="externalproj">External Open Source Projects Using LLVM 3.2</a>
247 </h2>
248 <!-- *********************************************************************** -->
249
250 <div>
251
252 <p>An exciting aspect of LLVM is that it is used as an enabling technology for
253    a lot of other language and tools projects. This section lists some of the
254    projects that have already been updated to work with LLVM 3.2.</p>
255
256 <h3>Crack</h3>
257
258 <div>
259
260 <p><a href="http://code.google.com/p/crack-language/">Crack</a> aims to provide
261    the ease of development of a scripting language with the performance of a
262    compiled language. The language derives concepts from C++, Java and Python,
263    incorporating object-oriented programming, operator overloading and strong
264    typing.</p>
265
266 </div>
267
268 <h3>FAUST</h3>
269
270 <div>
271
272 <p><a href="http://faust.grame.fr/">FAUST</a> is a compiled language for
273    real-time audio signal processing. The name FAUST stands for Functional
274    AUdio STream. Its programming model combines two approaches: functional
275    programming and block diagram composition. In addition with the C, C++, Java,
276    JavaScript output formats, the Faust compiler can generate LLVM bitcode, and
277    works with LLVM 2.7-3.1.</p>
278
279 </div>
280
281 <h3>Glasgow Haskell Compiler (GHC)</h3>
282
283 <div>
284
285 <p><a href="http://www.haskell.org/ghc/">GHC</a> is an open source compiler and
286    programming suite for Haskell, a lazy functional programming language. It
287    includes an optimizing static compiler generating good code for a variety of
288    platforms, together with an interactive system for convenient, quick
289    development.</p>
290
291 <p>GHC 7.0 and onwards include an LLVM code generator, supporting LLVM 2.8 and
292    later.</p>
293
294 </div>
295
296 <h3>Julia</h3>
297
298 <div>
299
300 <p><a href="https://github.com/JuliaLang/julia">Julia</a> is a high-level,
301    high-performance dynamic language for technical computing. It provides a
302    sophisticated compiler, distributed parallel execution, numerical accuracy,
303    and an extensive mathematical function library. The compiler uses type
304    inference to generate fast code without any type declarations, and uses
305    LLVM's optimization passes and JIT compiler. The
306    <a href="http://julialang.org/"> Julia Language</a> is designed
307    around multiple dispatch, giving programs a large degree of flexibility. It
308    is ready for use on many kinds of problems.</p>
309
310 </div>
311
312 <h3>LLVM D Compiler</h3>
313
314 <div>
315
316 <p><a href="https://github.com/ldc-developers/ldc">LLVM D Compiler</a> (LDC) is
317    a compiler for the D programming Language. It is based on the DMD frontend
318    and uses LLVM as backend.</p>
319
320 </div>
321
322 <h3>Open Shading Language</h3>
323
324 <div>
325
326 <p><a href="https://github.com/imageworks/OpenShadingLanguage/">Open Shading
327    Language (OSL)</a> is a small but rich language for programmable shading in
328    advanced global illumination renderers and other applications, ideal for
329    describing materials, lights, displacement, and pattern generation. It uses
330    LLVM to JIT complex shader networks to x86 code at runtime.</p>
331
332 <p>OSL was developed by Sony Pictures Imageworks for use in its in-house
333    renderer used for feature film animation and visual effects, and is
334    distributed as open source software with the "New BSD" license.</p>
335
336 </div>
337
338 <h3>Portable OpenCL (pocl)</h3>
339
340 <div>
341
342 <p>In addition to producing an easily portable open source OpenCL
343    implementation, another major goal of <a href="http://pocl.sourceforge.net/">
344    pocl</a> is improving performance portability of OpenCL programs with
345    compiler optimizations, reducing the need for target-dependent manual
346    optimizations. An important part of pocl is a set of LLVM passes used to
347    statically parallelize multiple work-items with the kernel compiler, even in
348    the presence of work-group barriers. This enables static parallelization of
349    the fine-grained static concurrency in the work groups in multiple ways
350    (SIMD, VLIW, superscalar,...).</p>
351
352 </div>
353
354 <h3>Pure</h3>
355
356 <div>
357
358 <p><a href="http://pure-lang.googlecode.com/">Pure</a> is an
359    algebraic/functional programming language based on term rewriting. Programs
360    are collections of equations which are used to evaluate expressions in a
361    symbolic fashion. The interpreter uses LLVM as a backend to JIT-compile Pure
362    programs to fast native code. Pure offers dynamic typing, eager and lazy
363    evaluation, lexical closures, a hygienic macro system (also based on term
364    rewriting), built-in list and matrix support (including list and matrix
365    comprehensions) and an easy-to-use interface to C and other programming
366    languages (including the ability to load LLVM bitcode modules, and inline C,
367    C++, Fortran and Faust code in Pure programs if the corresponding
368    LLVM-enabled compilers are installed).</p>
369
370 <p>Pure version 0.54 has been tested and is known to work with LLVM 3.1 (and
371    continues to work with older LLVM releases >= 2.5).</p>
372
373 </div>
374
375 <h3>TTA-based Co-design Environment (TCE)</h3>
376
377 <div>
378
379 <p><a href="http://tce.cs.tut.fi/">TCE</a> is a toolset for designing
380    application-specific processors (ASP) based on the Transport triggered
381    architecture (TTA). The toolset provides a complete co-design flow from C/C++
382    programs down to synthesizable VHDL/Verilog and parallel program binaries.
383    Processor customization points include the register files, function units,
384    supported operations, and the interconnection network.</p>
385
386 <p>TCE uses Clang and LLVM for C/C++ language support, target independent
387    optimizations and also for parts of code generation. It generates new
388    LLVM-based code generators "on the fly" for the designed TTA processors and
389    loads them in to the compiler backend as runtime libraries to avoid
390    per-target recompilation of larger parts of the compiler chain.</p>
391
392 </div>
393
394 </div>
395
396 <!-- *********************************************************************** -->
397 <h2>
398   <a name="whatsnew">What's New in LLVM 3.2?</a>
399 </h2>
400 <!-- *********************************************************************** -->
401
402 <div>
403
404 <p>This release includes a huge number of bug fixes, performance tweaks and
405    minor improvements. Some of the major improvements and new features are
406    listed in this section.</p>
407
408 <!--=========================================================================-->
409 <h3>
410 <a name="majorfeatures">Major New Features</a>
411 </h3>
412
413 <div>
414
415   <!-- Features that need text if they're finished for 3.2:
416    ARM EHABI
417    combiner-aa?
418    strong phi elim
419    loop dependence analysis
420    CorrelatedValuePropagation
421    lib/Transforms/IPO/MergeFunctions.cpp => consider for 3.2.
422    Integrated assembler on by default for arm/thumb?
423
424    -->
425
426   <!-- Near dead:
427    Analysis/RegionInfo.h + Dom Frontiers
428    SparseBitVector: used in LiveVar.
429    llvm/lib/Archive - replace with lib object?
430    -->
431
432 <p>LLVM 3.2 includes several major changes and big features:</p>
433
434 <ul>
435   <li>...</li>
436 </ul>
437
438 </div>
439
440
441 <!--=========================================================================-->
442 <h3>
443 <a name="coreimprovements">LLVM IR and Core Improvements</a>
444 </h3>
445
446 <div>
447
448 <p>LLVM IR has several new features for better support of new targets and that
449    expose new optimization opportunities:</p>
450
451 <ul>
452   <li>Thread local variables may have a specified TLS model. See the
453   <a href="LangRef.html#globalvars">Language Reference Manual</a>.</li>
454   <li>...</li>
455 </ul>
456
457 </div>
458
459 <!--=========================================================================-->
460 <h3>
461 <a name="optimizer">Optimizer Improvements</a>
462 </h3>
463
464 <div>
465
466 <p>In addition to many minor performance tweaks and bug fixes, this release
467    includes a few major enhancements and additions to the optimizers:</p>
468
469 <p> Loop Vectorizer - We've added a loop vectorizer and we are now able to
470     vectorize small loops. The loop vectorizer is disabled by default and
471     can be enabled using the <b>-mllvm -vectorize-loops</b> flag.
472     The SIMD vector width can be specified using the flag
473     <b>-mllvm -force-vector-width=4</b>.
474     The default value is <b>0</b> which means auto-select.
475     <br/>
476     We can now vectorize this function:
477
478     <pre class="doc_code">
479     unsigned sum_arrays(int *A, int *B, int start, int end) {
480       unsigned sum = 0;
481       for (int i = start; i &lt; end; ++i)
482         sum += A[i] + B[i] + i;
483
484       return sum;
485     }
486     </pre>
487
488     We vectorize under the following loops:
489     <ul>
490     <li>The inner most loops must have a single basic block.</li>
491     <li>The number of iterations are known before the loop starts to execute.</li>
492     <li>The loop counter needs to be incremented by one.</li>
493     <li>The loop trip count <b>can</b> be a variable.</li>
494     <li>Loops do <b>not</b> need to start at zero.</li>
495     <li>The induction variable can be used inside the loop.</li>
496     <li>Loop reductions are supported.</li>
497     <li>Arrays with affine access pattern do <b>not</b> need to be marked as 'noalias' and are checked at runtime.</li>
498     <li>...</li>
499     </ul>
500
501 </p>
502
503 <p>SROA - We've re-written SROA to be significantly more powerful.
504 <!-- FIXME: Add more text here... --></p>
505
506 <ul>
507   <li>Branch weight metadata is preseved through more of the optimizer.</li>
508   <li>...</li>
509 </ul>
510
511 </div>
512
513 <!--=========================================================================-->
514 <h3>
515 <a name="mc">MC Level Improvements</a>
516 </h3>
517
518 <div>
519
520 <p>The LLVM Machine Code (aka MC) subsystem was created to solve a number of
521    problems in the realm of assembly, disassembly, object file format handling,
522    and a number of other related areas that CPU instruction-set level tools work
523    in. For more information, please see the
524    <a href="http://blog.llvm.org/2010/04/intro-to-llvm-mc-project.html">Intro
525    to the LLVM MC Project Blog Post</a>.</p>
526
527 <ul>
528   <li>...</li>
529 </ul>
530
531 </div>
532
533 <!--=========================================================================-->
534 <h3>
535 <a name="codegen">Target Independent Code Generator Improvements</a>
536 </h3>
537
538 <div>
539
540 <p>Stack Coloring - We have implemented a new optimization pass
541   to merge stack objects which are used in disjoin areas of the code.
542   This optimization reduces the required stack space significantly, in cases
543   where it is clear to the optimizer that the stack slot is not shared.
544   We use the lifetime markers to tell the codegen that a certain alloca
545   is used within a region.</p>
546
547 <p> We now merge consecutive loads and stores. </p>
548
549 <p>We have put a significant amount of work into the code generator
550    infrastructure, which allows us to implement more aggressive algorithms and
551    make it run faster:</p>
552
553 <ul>
554   <li>...</li>
555 </ul>
556
557 <p> We added new TableGen infrastructure to support bundling for
558     Very Long Instruction Word (VLIW) architectures. TableGen can now
559     automatically generate a deterministic finite automaton from a VLIW
560     target's schedule description which can be queried to determine
561     legal groupings of instructions in a bundle.</p>
562
563 <p> We have added a new target independent VLIW packetizer based on the
564     DFA infrastructure to group machine instructions into bundles.</p>
565
566 </div>
567
568 <h4>
569 <a name="blockplacement">Basic Block Placement</a>
570 </h4>
571
572 <div>
573
574 <p>A probability based block placement and code layout algorithm was added to
575    LLVM's code generator. This layout pass supports probabilities derived from
576    static heuristics as well as source code annotations such as
577    <code>__builtin_expect</code>.</p>
578
579 </div>
580
581 <!--=========================================================================-->
582 <h3>
583 <a name="x86">X86-32 and X86-64 Target Improvements</a>
584 </h3>
585
586 <div>
587
588 <p>New features and major changes in the X86 target include:</p>
589
590 <ul>
591   <li>...</li>
592 </ul>
593
594 </div>
595
596 <!--=========================================================================-->
597 <h3>
598 <a name="ARM">ARM Target Improvements</a>
599 </h3>
600
601 <div>
602
603 <p>New features of the ARM target include:</p>
604
605 <ul>
606   <li>...</li>
607 </ul>
608
609 <!--_________________________________________________________________________-->
610
611 <h4>
612 <a name="armintegratedassembler">ARM Integrated Assembler</a>
613 </h4>
614
615 <div>
616
617 <p>The ARM target now includes a full featured macro assembler, including
618    direct-to-object module support for clang. The assembler is currently enabled
619    by default for Darwin only pending testing and any additional necessary
620    platform specific support for Linux.</p>
621
622 <p>Full support is included for Thumb1, Thumb2 and ARM modes, along with
623    subtarget and CPU specific extensions for VFP2, VFP3 and NEON.</p>
624
625 <p>The assembler is Unified Syntax only (see ARM Architecural Reference Manual
626    for details). While there is some, and growing, support for pre-unfied
627    (divided) syntax, there are still significant gaps in that support.</p>
628
629 </div>
630
631 </div>
632
633 <!--=========================================================================-->
634 <h3>
635 <a name="MIPS">MIPS Target Improvements</a>
636 </h3>
637
638 <div>
639
640 <p>New features and major changes in the MIPS target include:</p>
641
642 <ul>
643   <li>...</li>
644 </ul>
645
646 </div>
647
648 <!--=========================================================================-->
649 <h3>
650 <a name="OtherTS">Other Target Specific Improvements</a>
651 </h3>
652
653 <div>
654
655 <ul>
656   <li>...</li>
657 </ul>
658
659 </div>
660
661 <!--=========================================================================-->
662 <h3>
663 <a name="changes">Major Changes and Removed Features</a>
664 </h3>
665
666 <div>
667
668 <p>If you're already an LLVM user or developer with out-of-tree changes based on
669    LLVM 3.2, this section lists some "gotchas" that you may run into upgrading
670    from the previous release.</p>
671
672 <ul>
673   <li>...</li>
674 </ul>
675
676 </div>
677
678 <!--=========================================================================-->
679 <h3>
680 <a name="api_changes">Internal API Changes</a>
681 </h3>
682
683 <div>
684
685 <p>In addition, many APIs have changed in this release.  Some of the major
686    LLVM API changes are:</p>
687
688 <p> We've added a new interface for allowing IR-level passes to access
689   target-specific information. A new IR-level pass, called
690   "TargetTransformInfo" provides a number of low-level interfaces.
691   LSR and LowerInvoke already use the new interface. </p>
692
693 <p> The TargetData structure has been renamed to DataLayout and moved to VMCore
694 to remove a dependency on Target. </p>
695
696 <ul>
697   <li>...</li>
698 </ul>
699
700 </div>
701
702 <!--=========================================================================-->
703 <h3>
704 <a name="tools_changes">Tools Changes</a>
705 </h3>
706
707 <div>
708
709 <p>In addition, some tools have changed in this release. Some of the changes
710    are:</p>
711
712 <ul>
713   <li>...</li>
714 </ul>
715
716 </div>
717
718
719 <!--=========================================================================-->
720 <h3>
721 <a name="python">Python Bindings</a>
722 </h3>
723
724 <div>
725
726 <p>Officially supported Python bindings have been added! Feature support is far
727    from complete. The current bindings support interfaces to:</p>
728
729 <ul>
730   <li>...</li>
731 </ul>
732
733 </div>
734
735 </div>
736
737 <!-- *********************************************************************** -->
738 <h2>
739   <a name="knownproblems">Known Problems</a>
740 </h2>
741 <!-- *********************************************************************** -->
742
743 <div>
744
745 <p>LLVM is generally a production quality compiler, and is used by a broad range
746    of applications and shipping in many products.  That said, not every
747    subsystem is as mature as the aggregate, particularly the more obscure
748    targets.  If you run into a problem, please check
749    the <a href="http://llvm.org/bugs/">LLVM bug database</a> and submit a bug if
750    there isn't already one or ask on
751    the <a href="http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev">LLVMdev
752    list</a>.</p>
753
754   <p>Known problem areas include:</p>
755
756 <ul>
757   <li>The CellSPU, MSP430, PTX and XCore backends are experimental.</li>
758
759   <li>The integrated assembler, disassembler, and JIT is not supported by
760       several targets. If an integrated assembler is not supported, then a
761       system assembler is required.  For more details, see the <a
762       href="CodeGenerator.html#targetfeatures">Target Features Matrix</a>.
763   </li>
764 </ul>
765
766 </div>
767
768 <!-- *********************************************************************** -->
769 <h2>
770   <a name="additionalinfo">Additional Information</a>
771 </h2>
772 <!-- *********************************************************************** -->
773
774 <div>
775
776 <p>A wide variety of additional information is available on
777    the <a href="http://llvm.org/">LLVM web page</a>, in particular in
778    the <a href="http://llvm.org/docs/">documentation</a> section.  The web page
779    also contains versions of the API documentation which is up-to-date with the
780    Subversion version of the source code.  You can access versions of these
781    documents specific to this release by going into the "<tt>llvm/doc/</tt>"
782    directory in the LLVM tree.</p>
783
784 <p>If you have any questions or comments about LLVM, please feel free to contact
785    us via the <a href="http://llvm.org/docs/#maillist"> mailing lists</a>.</p>
786
787 </div>
788
789 <!-- *********************************************************************** -->
790
791 <hr>
792 <address>
793   <a href="http://jigsaw.w3.org/css-validator/check/referer"><img
794   src="http://jigsaw.w3.org/css-validator/images/vcss-blue" alt="Valid CSS"></a>
795   <a href="http://validator.w3.org/check/referer"><img
796   src="http://www.w3.org/Icons/valid-html401-blue" alt="Valid HTML 4.01"></a>
797
798   <a href="http://llvm.org/">LLVM Compiler Infrastructure</a><br>
799   Last modified: $Date$
800 </address>
801
802 </body>
803 </html>