blob: 246b670145a3e71a56a69a3807746fb7632f7e55 [file] [log] [blame]
Duncan Sandse2e4a892009-06-24 08:38:48 +00001<!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="llvm.css" type="text/css">
7 <title>LLVM 2.6 Release Notes</title>
8</head>
9<body>
10
11<div class="doc_title">LLVM 2.6 Release Notes</div>
12
13<ol>
14 <li><a href="#intro">Introduction</a></li>
15 <li><a href="#subproj">Sub-project Status Update</a></li>
16 <li><a href="#externalproj">External Projects Using LLVM 2.6</a></li>
17 <li><a href="#whatsnew">What's New in LLVM 2.6?</a></li>
18 <li><a href="GettingStarted.html">Installation Instructions</a></li>
19 <li><a href="#portability">Portability and Supported Platforms</a></li>
20 <li><a href="#knownproblems">Known Problems</a></li>
21 <li><a href="#additionalinfo">Additional Information</a></li>
22</ol>
23
24<div class="doc_author">
25 <p>Written by the <a href="http://llvm.org">LLVM Team</a></p>
26</div>
27
28<!-- *********************************************************************** -->
29<div class="doc_section">
30 <a name="intro">Introduction</a>
31</div>
32<!-- *********************************************************************** -->
33
34<div class="doc_text">
35
36<p>This document contains the release notes for the LLVM Compiler
37Infrastructure, release 2.6. Here we describe the status of LLVM, including
38major improvements from the previous release and significant known problems.
39All LLVM releases may be downloaded from the <a
40href="http://llvm.org/releases/">LLVM releases web site</a>.</p>
41
42<p>For more information about LLVM, including information about the latest
43release, please check out the <a href="http://llvm.org/">main LLVM
44web site</a>. If you have questions or comments, the <a
45href="http://mail.cs.uiuc.edu/mailman/listinfo/llvmdev">LLVM Developer's Mailing
46List</a> is a good place to send them.</p>
47
48<p>Note that if you are reading this file from a Subversion checkout or the
49main LLVM web page, this document applies to the <i>next</i> release, not the
50current one. To see the release notes for a specific release, please see the
51<a href="http://llvm.org/releases/">releases page</a>.</p>
52
53</div>
Chris Lattner80ed2552009-10-08 07:01:46 +000054
Chris Lattnerc758fec2009-10-05 02:12:39 +000055
Chris Lattner7b0a6812009-10-08 06:27:53 +000056<!--
57Almost dead code.
Chris Lattner80ed2552009-10-08 07:01:46 +000058 include/llvm/Analysis/LiveValues.h => Dan
59 lib/Transforms/IPO/MergeFunctions.cpp => consider for 2.8.
60 llvm/Analysis/PointerTracking.h => Edwin wants this, consider for 2.8.
Chris Lattner7b0a6812009-10-08 06:27:53 +000061-->
Chris Lattnerc758fec2009-10-05 02:12:39 +000062
Chris Lattnerc758fec2009-10-05 02:12:39 +000063
64<!-- Unfinished features in 2.6:
Chris Lattner80ed2552009-10-08 07:01:46 +000065 gcc plugin.
Chris Lattnerc758fec2009-10-05 02:12:39 +000066 strong phi elim
67 variable debug info for optimized code
Duncan Sandse2e4a892009-06-24 08:38:48 +000068 postalloc scheduler: anti dependence breaking, hazard recognizer?
Chris Lattnerc758fec2009-10-05 02:12:39 +000069 metadata
70 loop dependence analysis
Chris Lattner80ed2552009-10-08 07:01:46 +000071 ELF Writer? How stable?
72 <li>PostRA scheduler improvements, ARM adoption (David Goodwin).</li>
73
Duncan Sandse2e4a892009-06-24 08:38:48 +000074 -->
75
76 <!-- for announcement email:
Chris Lattnerc758fec2009-10-05 02:12:39 +000077 Logo web page.
78 llvm devmtg
79 compiler_rt
Chris Lattner7b0a6812009-10-08 06:27:53 +000080 klee web page at klee.llvm.org
81 Many new papers added to /pubs/
82 Mention gcc plugin.
83
Duncan Sandse2e4a892009-06-24 08:38:48 +000084 -->
85
86<!-- *********************************************************************** -->
87<div class="doc_section">
88 <a name="subproj">Sub-project Status Update</a>
89</div>
90<!-- *********************************************************************** -->
91
92<div class="doc_text">
93<p>
94The LLVM 2.6 distribution currently consists of code from the core LLVM
95repository &mdash;which roughly includes the LLVM optimizers, code generators
96and supporting tools &mdash; and the llvm-gcc repository. In addition to this
97code, the LLVM Project includes other sub-projects that are in development. The
98two which are the most actively developed are the <a href="#clang">Clang
99Project</a> and the <a href="#vmkit">VMKit Project</a>.
100</p>
101
102</div>
103
104
105<!--=========================================================================-->
106<div class="doc_subsection">
107<a name="clang">Clang: C/C++/Objective-C Frontend Toolkit</a>
108</div>
109
110<div class="doc_text">
111
Chris Lattner28d02742009-10-09 05:01:15 +0000112<p>The <a href="http://clang.llvm.org/">Clang project</a> is an effort to build
113a set of new 'LLVM native' front-end technologies for the C family of languages.
114LLVM 2.6 is the first release to officially include Clang, and it provides a
115production quality C and Objective-C compiler. If you are interested in fast
116compiles and good diagnostics, we encourage you to try it out.</p>
117
118<p>In addition to supporting these languages, C++ support is also <a
119href="http://clang.llvm.org/cxx_status.html">well under way</a>, and mainline
120Clang is able to parse the libstdc++ 4.2 headers and even codegen simple apps.
121If you are interested in Clang C++ support or any other Clang feature, we
122strongly encourage you to get involved on the <a
Duncan Sandse2e4a892009-06-24 08:38:48 +0000123href="http://lists.cs.uiuc.edu/mailman/listinfo/cfe-dev">Clang front-end mailing
124list</a>.</p>
125
126<p>In the LLVM 2.6 time-frame, the Clang team has made many improvements:</p>
127
128<ul>
Chris Lattner28d02742009-10-09 05:01:15 +0000129<li>C and Objective-C support are now considered production quality.</li>
Chris Lattnerc32a5322009-09-30 06:27:22 +0000130<li>AuroraUX / FreeBSD &amp; OpenBSD Toolchain support.</li>
Chris Lattner28d02742009-10-09 05:01:15 +0000131<li>Most of Objective-C 2.0 is now supported with the GNU runtime.</li>
Duncan Sandse2e4a892009-06-24 08:38:48 +0000132<li>Many many bugs are fixed and many features have been added.</li>
133</ul>
134</div>
135
136<!--=========================================================================-->
137<div class="doc_subsection">
138<a name="clangsa">Clang Static Analyzer</a>
139</div>
140
141<div class="doc_text">
142
Chris Lattner80ed2552009-10-08 07:01:46 +0000143<p><b>UPDATE!</b> Previously announced in the 2.4 and 2.5 LLVM releases, the Clang project also
Duncan Sandse2e4a892009-06-24 08:38:48 +0000144includes an early stage static source code analysis tool for <a
145href="http://clang.llvm.org/StaticAnalysis.html">automatically finding bugs</a>
146in C and Objective-C programs. The tool performs a growing set of checks to find
147bugs that occur on a specific path within a program.</p>
148
149<p>In the LLVM 2.6 time-frame there have been many significant improvements to
150XYZ.</p>
151
152<p>The set of checks performed by the static analyzer continues to expand, and
153future plans for the tool include full source-level inter-procedural analysis
154and deeper checks such as buffer overrun detection. There are many opportunities
155to extend and enhance the static analyzer, and anyone interested in working on
156this project is encouraged to get involved!</p>
157
158</div>
159
160<!--=========================================================================-->
161<div class="doc_subsection">
162<a name="vmkit">VMKit: JVM/CLI Virtual Machine Implementation</a>
163</div>
164
165<div class="doc_text">
166<p>
Chris Lattner80ed2552009-10-08 07:01:46 +0000167<b>UPDATE!</b>
Duncan Sandse2e4a892009-06-24 08:38:48 +0000168The <a href="http://vmkit.llvm.org/">VMKit project</a> is an implementation of
169a JVM and a CLI Virtual Machines (Microsoft .NET is an
170implementation of the CLI) using the Just-In-Time compiler of LLVM.</p>
171
172<p>Following LLVM 2.6, VMKit has its XYZ release that you can find on its
173<a href="http://vmkit.llvm.org/releases/">webpage</a>. The release includes
174bug fixes, cleanup and new features. The major changes are:</p>
175
176<ul>
177
178<li>Something wonderful!</li>
179
180</ul>
181</div>
182
Chris Lattner6ee62f82009-10-09 05:55:04 +0000183
184<!--=========================================================================-->
185<div class="doc_subsection">
186<a name="compiler-rt">compiler-rt: Compiler Runtime Library</a>
187</div>
188
189<div class="doc_text">
190<p>
191The new LLVM <a href="http://compiler-rt.llvm.org/">compiler-rt project</a>
192is a simple library that provides an implementation of the low-level
193target-specific hooks required by code generation and other runtime components.
194For example, when compiling for a 32-bit target, converting a double to a 64-bit
195unsigned integer is compiling into a runtime call to the "__fixunsdfdi"
196function. The compiler-rt library provides optimized implementations of this and
197other low-level routines.</p>
198
199<p>
200All of the code in the compiler-rt project is available under the standard LLVM
201License, a "BSD-style" license.</p>
202
203</div>
204
205<!--=========================================================================-->
206<div class="doc_subsection">
207<a name="klee">klee: Symbolic Execution and Automatic Test Case Generator</a>
208</div>
209
210<div class="doc_text">
211<p>
212The new LLVM <a href="http://klee.llvm.org/">klee project</a> is a symbolic
213execution framework for programs in LLVM bitcode form. Klee tries to
214symbolically evaluate "all" paths through the application and records state
215transitions that lead to fault states. This allows it to construct testcases
216that lead to faults and can even be used to verify algorithms. For more
217details, please see the <a
218href="http://llvm.org/pubs/2008-12-OSDI-KLEE.html">OSDI 2008 paper</a> about
219Klee.</p>
220
221</div>
222
223<!--=========================================================================-->
224<div class="doc_subsection">
225<a name="dragonegg">Dragon Egg: An LLVM backend plugin for GCC</a>
226</div>
227
228<div class="doc_text">
229<p>
230<b>Duncan needs to write me</b>.
231</p>
232
233</div>
234
235
Chris Lattner80ed2552009-10-08 07:01:46 +0000236<!--=========================================================================-->
237<div class="doc_subsection">
238<a name="mc">llvm-mc: Machine Code Toolkit</a>
239</div>
240
241<div class="doc_text">
242<p>
243<b>UPDATE!</b>
244blah
245
246 MC:
247 MCSection, MCAsmInfo
248 MCInstPrinter did it make it in?
249 MCInst (X86 using it so far)
250 Rewrite of X86 GV selection logic: TargetOperand flags on ExternalSymbol, GV, etc operands.
251 Can parse and re-print out an darwin-x86 .s file.
252 TargetLoweringObjectFile, MCSectionKind
253 Verrrry early start of a macho writer.
254</p>
255
256</div>
257
258
Duncan Sandse2e4a892009-06-24 08:38:48 +0000259<!-- *********************************************************************** -->
260<div class="doc_section">
261 <a name="externalproj">External Projects Using LLVM 2.6</a>
262</div>
263<!-- *********************************************************************** -->
264
Chris Lattner80ed2552009-10-08 07:01:46 +0000265<!--=========================================================================-->
266<div class="doc_subsection">
267<a name="Rubinius">Rubinius</a>
268</div>
269
270<div class="doc_text">
271<p><a href="http://github.com/evanphx/rubinius">Rubinius</a> is an environment
272for running Ruby code which strives to write as much of the core class
273implementation in Ruby as possible. Combined with a bytecode interpreting VM, it
274uses LLVM to optimize and compile ruby code down to machine code. Techniques
275such as type feedback, method inlining, and uncommon traps are all used to
276remove dynamism from ruby execution and increase performance.</p>
Chris Lattnerd4a537b2009-10-08 16:01:33 +0000277
278<p>Since LLVM 2.5, Rubinius has made several major leaps forward, implementing
279a counter based JIT, type feedback, and speculative method inlining.
280</p>
281
Chris Lattner80ed2552009-10-08 07:01:46 +0000282</div>
Chris Lattnerc32a5322009-09-30 06:27:22 +0000283
284<!--=========================================================================-->
285<div class="doc_subsection">
286<a name="macruby">MacRuby</a>
287</div>
288
289<div class="doc_text">
290
291<p>
292<a href="http://macruby.org">MacRuby</a> is an implementation of Ruby on top of
293core Mac OS X technologies, such as the Objective-C common runtime and garbage
294collector, and the CoreFoundation framework. It is principally developed by
295Apple and aims at enabling the creation of full-fledged Mac OS X applications.
296</p>
297
298<p>
299MacRuby uses LLVM for optimization passes, JIT and AOT compilation of Ruby
300expressions. It also uses zero-cost DWARF exceptions to implement Ruby exception
301handling.</p>
302
303</div>
304
305
Duncan Sandse2e4a892009-06-24 08:38:48 +0000306<!--=========================================================================-->
307<div class="doc_subsection">
308<a name="pure">Pure</a>
309</div>
310
311<div class="doc_text">
312<p>
313<a href="http://pure-lang.googlecode.com/">Pure</a>
314is an algebraic/functional programming language based on term rewriting.
315Programs are collections of equations which are used to evaluate expressions in
316a symbolic fashion. Pure offers dynamic typing, eager and lazy evaluation,
317lexical closures, a hygienic macro system (also based on term rewriting),
318built-in list and matrix support (including list and matrix comprehensions) and
319an easy-to-use C interface. The interpreter uses LLVM as a backend to
320 JIT-compile Pure programs to fast native code.</p>
321
Chris Lattnerd4a537b2009-10-08 16:01:33 +0000322<p>Pure versions 0.31 and later have been tested and are known to work with
323LLVM 2.6 (and continue to work with older LLVM releases >= 2.3 as well).
Duncan Sandse2e4a892009-06-24 08:38:48 +0000324</p>
325</div>
326
327
328<!--=========================================================================-->
329<div class="doc_subsection">
330<a name="ldc">LLVM D Compiler</a>
331</div>
332
333<div class="doc_text">
334<p>
335<a href="http://www.dsource.org/projects/ldc">LDC</a> is an implementation of
336the D Programming Language using the LLVM optimizer and code generator.
337The LDC project works great with the LLVM 2.6 release. General improvements in
338this
339cycle have included new inline asm constraint handling, better debug info
340support, general bugfixes, and better x86-64 support. This has allowed
341some major improvements in LDC, getting us much closer to being as
342fully featured as the original DMD compiler from DigitalMars.
343</p>
344</div>
345
346<!--=========================================================================-->
347<div class="doc_subsection">
348<a name="RoadsendPHP">Roadsend PHP</a>
349</div>
350
351<div class="doc_text">
Chris Lattner80ed2552009-10-08 07:01:46 +0000352<p>
Chris Lattner80ed2552009-10-08 07:01:46 +0000353<a href="http://code.roadsend.com/rphp">Roadsend PHP</a> (rphp) is an open
Duncan Sandse2e4a892009-06-24 08:38:48 +0000354source implementation of the PHP programming
355language that uses LLVM for its optimizer, JIT, and static compiler. This is a
356reimplementation of an earlier project that is now based on LLVM.</p>
357</div>
358
Jeffrey Yasskinba2aa782009-06-24 21:09:13 +0000359<!--=========================================================================-->
360<div class="doc_subsection">
Chris Lattner6ee62f82009-10-09 05:55:04 +0000361<a name="UnladenSwallow">Unladen Swallow</a>
Jeffrey Yasskinba2aa782009-06-24 21:09:13 +0000362</div>
363
364<div class="doc_text">
Chris Lattner80ed2552009-10-08 07:01:46 +0000365<p>
Chris Lattner80ed2552009-10-08 07:01:46 +0000366<a href="http://code.google.com/p/unladen-swallow/">Unladen Swallow</a> is a
Jeffrey Yasskinba2aa782009-06-24 21:09:13 +0000367branch of <a href="http://python.org/">Python</a> intended to be fully
368compatible and significantly faster. It uses LLVM's optimization passes and JIT
369compiler.</p>
370</div>
371
Chris Lattner6ee62f82009-10-09 05:55:04 +0000372<!--=========================================================================-->
373<div class="doc_subsection">
374<a name="llvm-lua">llvm-lua</a>
375</div>
376
377<div class="doc_text">
378<p>
379<a href="http://code.google.com/p/llvm-lua/">LLVM-Lua</a> uses LLVM to add JIT
380&amp; static compiling support to the Lua VM. Lua bytecode is analyzed to
381remove type checks, then LLVM is used to compile those bytecodes down to machine
382code.</p>
383</div>
384
Jeffrey Yasskin5e98cb72009-06-24 21:26:42 +0000385
Duncan Sandse2e4a892009-06-24 08:38:48 +0000386
387<!-- *********************************************************************** -->
388<div class="doc_section">
389 <a name="whatsnew">What's New in LLVM 2.6?</a>
390</div>
391<!-- *********************************************************************** -->
392
393<div class="doc_text">
394
395<p>This release includes a huge number of bug fixes, performance tweaks, and
396minor improvements. Some of the major improvements and new features are listed
397in this section.
398</p>
Chris Lattner7b0a6812009-10-08 06:27:53 +0000399
Duncan Sandse2e4a892009-06-24 08:38:48 +0000400</div>
401
402<!--=========================================================================-->
403<div class="doc_subsection">
404<a name="majorfeatures">Major New Features</a>
405</div>
406
407<div class="doc_text">
408
409<p>LLVM 2.6 includes several major new capabilities:</p>
410
411<ul>
Chris Lattner6ee62f82009-10-09 05:55:04 +0000412<li>New <a href="#compiler-rt">compiler-rt</a>, <A href="#klee">klee</a>,
413 and <a href="#mc">machine code toolkit</a> subprojects.</li>
414<li>LLVM debug info now generates line number information, even when
415 optimizations are enabled. This allows statistical sampling tools like
416 oprofile and Shark to map samples back to source lines.</li>
417<li>LLVM now includes new experiemental backends to support the MSP430, SystemZ,
418 and BlackFin architectures.</li>
419<li>LLVM supports a new <a href="GoldPlugin.html">Gold Linker Plugin</a> which
420 enables support for <a href="LinkTimeOptimization.html">transparent
421 link-time optimization</a> on ELF targets when used with the Gold binutils
422 linker.</li>
Chris Lattner7b0a6812009-10-08 06:27:53 +0000423<li>LLVMContext, llvm_start_multithreaded: ProgrammersManual.html#threading</li>
Chris Lattner7b0a6812009-10-08 06:27:53 +0000424<li>FileCheck</li>
Edward O'Callaghan50310f92009-08-22 02:17:22 +0000425<li>LLVM 2.6 includes a brand new experimental LLVM bindings to the Ada2005 programming language.</li>
Duncan Sandse2e4a892009-06-24 08:38:48 +0000426</ul>
427
428</div>
429
Duncan Sandse2e4a892009-06-24 08:38:48 +0000430<!--=========================================================================-->
431<div class="doc_subsection">
432<a name="coreimprovements">LLVM IR and Core Improvements</a>
433</div>
434
435<div class="doc_text">
436<p>LLVM IR has several new features that are used by our existing front-ends and
437can be useful if you are writing a front-end for LLVM:</p>
438
439<ul>
Chris Lattner7b0a6812009-10-08 06:27:53 +0000440<li>Getelementpr instruction now allows any integer type for array/pointer indexes.</li>
441<li>Inbounds for GEP</li>
442<li>NSW/NUW/exact div</li>
443<li>LSR promotes int induction variables to 64-bit on 64-bit targets, major perf boost for numerical code.</li>
444<li>LSR now analyzes pointer expressions (e.g. getelementptrs), not just integers.</li>
445<li>new linkage types linkonce_odr, weak_odr, linker_private, and available_externally.</li>
446<li>New fadd, fsub, fmul instructions and classes. </li>
447<li>Target intrinsics can now return multiple results.</li>
Duncan Sandse2e4a892009-06-24 08:38:48 +0000448</ul>
449
450</div>
451
452<!--=========================================================================-->
453<div class="doc_subsection">
454<a name="optimizer">Optimizer Improvements</a>
455</div>
456
457<div class="doc_text">
458
459<p>In addition to a large array of bug fixes and minor performance tweaks, this
460release includes a few major enhancements and additions to the optimizers:</p>
461
462<ul>
463
Chris Lattner7b0a6812009-10-08 06:27:53 +0000464<li>SRoA improvements for vector unions, memset, arbitrary weird bitfield accesses etc. It now produces "strange" sized integers.</li>
465<li>Inliner reuse stack space when inlining arrays?</li>
466<li>Enabled GVN Load PRE.</li>
467<li>New Static Single Information (SSI) construction pass (not used by anything yet, experimental).</li>
468</li>
Duncan Sandse2e4a892009-06-24 08:38:48 +0000469
470</ul>
471
472</div>
473
474<!--=========================================================================-->
475<div class="doc_subsection">
476<a name="codegen">Target Independent Code Generator Improvements</a>
477</div>
478
479<div class="doc_text">
480
481<p>We have put a significant amount of work into the code generator
482infrastructure, which allows us to implement more aggressive algorithms and make
483it run faster:</p>
484
485<ul>
486
Chris Lattner7b0a6812009-10-08 06:27:53 +0000487<li> -asm-verbose now prints location info (with -g) and loop nest info.</li>
488<li>Tblgen now supports multiclass inheritance and a number of new string and
489 list operations like !(subst), !(foreach), !car, !cdr, !null, !if, !cast.
490 These make the .td files more expressive and allow more aggressive factoring
491 of duplication across instruction patterns.</li>
492<li>New MachineVerifier pass.</li>
493<li>Machine LICM, hoists things like constant pool loads, loads from readonly stubs, vector constant synthesization code, etc.</li>
494<li>Machine Sinking</li>
495<li>target-specific intrinsics (r63765)</li>
496<li>Regalloc improvements for commuting, various spiller peephole optimizations, cross-class coalescing.</li>
497<li><tt>llc -enable-value-prop</tt>, propagation of value info (sign/zero ext info) from one MBB to another</li>
498<li>Regalloc hints for allocation stuff: Evan r73381/r73671. Finished/enabled?</li>
499<li>Stack slot coloring for register spills (denser stack frames)</li>
500<li>SelectionDAGS: New BuildVectorSDNode (r65296), and ISD::VECTOR_SHUFFLE (r69952 / PR2957)</li>
Chris Lattner80ed2552009-10-08 07:01:46 +0000501<li>Experimental support for shrink wrapping support in PEI.</li>
Chris Lattner6ee62f82009-10-09 05:55:04 +0000502<li>Experimental support for writing ELF .o files directly from the compiler,
503 it works well for many simple C testcases, but doesn't support exception
504 handling, debug info, inline assembly, etc.</li>
505<li>Targets can now specify register allocation hints through
506 MachineRegisterInfo:: setRegAllocationHint. A regalloc hint consists 1) hint
507 type, 2) physical register number. A hint type of zero specifies a register
508 allocation preference. Other hint type values are target specific which are
509 resolved by TargetRegisterInfo::ResolveRegAllocHint. An example of which is
510 the ARM target can uses register hint to request that the register allocator
511 provide an even / odd register pair to two virtual registers. It is
512 important to note the register allocation hints are just hints. There is no
513 guarantee the register allocators will be able to satisfy the hints.</li>
514
Duncan Sandse2e4a892009-06-24 08:38:48 +0000515</ul>
516</div>
517
518<!--=========================================================================-->
519<div class="doc_subsection">
520<a name="x86">X86-32 and X86-64 Target Improvements</a>
521</div>
522
523<div class="doc_text">
524<p>New features of the X86 target include:
525</p>
526
527<ul>
528
Chris Lattner7b0a6812009-10-08 06:27:53 +0000529<li>Preliminary support for addrspace 256 -> GS, 257 -> FS, known problems: CodeGenerator.html#x86_memory</li>
530<li>Support for softfloat modes, typically used by OS kernels.</li>
531
532<li>X86-64: better modeling of implicit zero extensions, eliminates a lot of redundant zexts</li>
533<li>X86-64 TLS support for local exec and initial exec.</li>
534<li>Better modeling of H registerts as subregs.</li>
535<li>Vector icmp/fcmp now work with SSE codegen.</li>
536<li>SSE 4.2 support.</li>
537<li>all global variable reference logic is now in ClassifyGlobalReference.</li>
538</li>
Duncan Sandse2e4a892009-06-24 08:38:48 +0000539</ul>
540
541</div>
542
543<!--=========================================================================-->
544<div class="doc_subsection">
545<a name="pic16">PIC16 Target Improvements</a>
546</div>
547
548<div class="doc_text">
549<p>New features of the PIC16 target include:
550</p>
551
552<ul>
Chris Lattner7b0a6812009-10-08 06:27:53 +0000553<li>Support for floating-point, indirect function calls, and
554 passing/returning aggregate types to functions.
555<li>The code generator is able to generate debug info into output COFF files.
556<li>Support for placing an object into a specific section or at a specific
557 address in memory.</li>
Duncan Sandse2e4a892009-06-24 08:38:48 +0000558</ul>
559
560<p>Things not yet supported:</p>
561
562<ul>
Duncan Sandse2e4a892009-06-24 08:38:48 +0000563<li>Variable arguments.</li>
Duncan Sandse2e4a892009-06-24 08:38:48 +0000564<li>Interrupts/programs.</li>
Duncan Sandse2e4a892009-06-24 08:38:48 +0000565</ul>
566
567</div>
568
Bob Wilson755cbe02009-08-12 21:19:49 +0000569<!--=========================================================================-->
570<div class="doc_subsection">
571<a name="ARM">ARM Target Improvements</a>
572</div>
573
574<div class="doc_text">
575<p>New features of the ARM target include:
576</p>
577
578<ul>
579
580<li>Preliminary support for processors, such as the Cortex-A8 and Cortex-A9,
Sandeep Patel64e39612009-08-20 15:01:16 +0000581that implement version v7-A of the ARM architecture. The ARM backend now
582supports both the Thumb2 and Advanced SIMD (Neon) instruction sets. The
583AAPCS-VFP "hard float" calling conventions are also supported with the
584<tt>-float-abi=hard</tt> flag. These features are still somewhat experimental
585and subject to change. The Neon intrinsics, in particular, may change in future
586releases of LLVM.
Bob Wilson755cbe02009-08-12 21:19:49 +0000587</li>
Chris Lattner7b0a6812009-10-08 06:27:53 +0000588
589 ARM AAPCS-VFP hard float ABI is supported.
590 ARM calling convention code is now tblgen generated instead of manual.
591 ARM: NEON support. neonfp for doing single precision fp with neon instead of VFP.
592
Bob Wilson755cbe02009-08-12 21:19:49 +0000593</ul>
594
595</div>
596
Duncan Sandse2e4a892009-06-24 08:38:48 +0000597<!--=========================================================================-->
598<div class="doc_subsection">
Chris Lattner7b0a6812009-10-08 06:27:53 +0000599<a name="OtherTarget">Other Target Specific Improvements</a>
Duncan Sandse2e4a892009-06-24 08:38:48 +0000600</div>
601
602<div class="doc_text">
Chris Lattner7b0a6812009-10-08 06:27:53 +0000603<p>New features of other targets include:
604</p>
Duncan Sandse2e4a892009-06-24 08:38:48 +0000605
606<ul>
Chris Lattner7b0a6812009-10-08 06:27:53 +0000607<li>Add support for the PowerPC 64-bit SVR4 ABI.</li>
608<li>Mips now supports O32 Calling Convention.</li>
609</ul>
610
611</div>
612
613<!--=========================================================================-->
614<div class="doc_subsection">
615<a name="newapis">New Useful APIs</a>
616</div>
617
618<div class="doc_text">
619
620<ul>
621<li>New EngineBuilder class for creating JITs: r76276</li>
622 New PrettyStackTrace, crashes of llvm tools should give some indication of what the compiler was doing at the time of the crash (e.g. running a pass), and print out command line arguments.
623 StringRef class, Twine class.
624 New WeakVH and AssertingVH and CallbackVH classes.
625 New llvm/ADT/Triple class.
626 llvm_report_error() error handling API (llvm/Support/ErrorHandling.h)
627 New llvm/System/Atomic.h, llvm/System/RWMutex.h for portable atomic ops, rw locks.
628 New SourceMgr, SMLoc classes for simple parsers with caret diagnostics and #include support, (used by
629 tablegen, llvm-mc, the .ll parser, FileCheck, etc)
630
631<ul>
632
633
634</div>
635
636<!--=========================================================================-->
637<div class="doc_subsection">
638<a name="otherimprovements">Other Improvements and New Features</a>
639</div>
640
641<div class="doc_text">
642<p>Other miscellaneous features include:</p>
643
644<ul>
645<li>interpreter + libffi</li>
646<li> JIT now supports generating more than 16M of code.</li>
647<li>Users can now <a
648href="http://llvm.org/doxygen/classllvm_1_1ExecutionEngine.html#fcd2b4b92ca38812ca31640b0da14927">register</a>
649a <a href="http://llvm.org/doxygen/classllvm_1_1JITEventListener.html">JITEventListener</a>
650to receive callbacks when the JIT emits or frees machine code. The
651OProfile support uses this mechanism.</li>
652 JIT support for oprofile (r75279), configure with --with-oprofile. Now we get line # and function info for JIT'd functions.
653
Chris Lattner6ee62f82009-10-09 05:55:04 +0000654<li>LLVM profile information support has been significantly improved to produce
655correct use counts, and has support for edge profiling with reduced runtime
656overhead. Combined, the generated profile information is both more correct and
657imposes about half as much overhead (2.6. from 12% to 6% overhead on SPEC
658CPU2000).</li>
Chris Lattner80ed2552009-10-08 07:01:46 +0000659<li>Many extensions to the C APIs.</li>
660
661<li>LLVMC:
662
663* Dynamic plugins now work on Windows.
664* New option property: init. Makes possible to provide default values for
665 options defined in plugins (interface to cl::init).
666* New example: Skeleton, shows how to create a standalone LLVMC-based driver.
667* New example: mcc16, a driver for the PIC16 toolchain.</li>
668
Duncan Sandse2e4a892009-06-24 08:38:48 +0000669</ul>
670
671</div>
672
673
674<!--=========================================================================-->
675<div class="doc_subsection">
676<a name="changes">Major Changes and Removed Features</a>
677</div>
678
679<div class="doc_text">
680
681<p>If you're already an LLVM user or developer with out-of-tree changes based
Owen Andersone27be3a2009-07-02 16:48:38 +0000682on LLVM 2.5, this section lists some "gotchas" that you may run into upgrading
Duncan Sandse2e4a892009-06-24 08:38:48 +0000683from the previous release.</p>
684
685<ul>
686
Chris Lattner7b0a6812009-10-08 06:27:53 +0000687<li>The Itanium (IA64) backend has been removed. It was not supported and
688 bitrotted.</li>
689<li>The BigBlock register allocator has been removed, it also bitrotted.</li>
690<li>The C Backend (-march=c) is no longer considered part of the LLVM release
691criteria. We still want it to work, but no one is maintaining it and it lacks
692support for arbitrary precision integers and other important IR features.</li>
Duncan Sandse2e4a892009-06-24 08:38:48 +0000693</ul>
694
Chris Lattner80ed2552009-10-08 07:01:46 +0000695 LLVM build now builds all libraries as .a files instead of some
696 libraries as relinked .o files. This requires some APIs like
697 InitializeAllTargets.h. TargetRegistry!
698
699
700
Duncan Sandse2e4a892009-06-24 08:38:48 +0000701
702<p>In addition, many APIs have changed in this release. Some of the major LLVM
703API changes are:</p>
704
Chris Lattner7b0a6812009-10-08 06:27:53 +0000705
706 API Cleanup:
707 no use of hash_set/hash_map, no more llvm::OStream
708 Use raw_ostream for everything, killed off llvm/Streams.h and DOUT
709
Duncan Sandse2e4a892009-06-24 08:38:48 +0000710<ul>
Owen Andersone27be3a2009-07-02 16:48:38 +0000711<li>LLVM's global uniquing tables for <tt>Type</tt>s and <tt>Constant</tt>s have
712 been privatized into members of an <tt>LLVMContext</tt>. A number of APIs
713 now take an <tt>LLVMContext</tt> as a parameter. To smooth the transition
714 for clients that will only ever use a single context, the new
715 <tt>getGlobalContext()</tt> API can be used to access a default global
716 context which can be passed in any and all cases where a context is
717 required.
Duncan Sandse2e4a892009-06-24 08:38:48 +0000718<li>The <tt>getABITypeSize</tt> methods are now called <tt>getAllocSize</tt>.</li>
Dan Gohmanf667e7e2009-07-07 20:05:15 +0000719<li>The <tt>Add</tt>, <tt>Sub</tt>, and <tt>Mul</tt> operators are no longer
720 overloaded for floating-point types. Floating-point addition, subtraction,
721 and multiplication are now represented with new operators <tt>FAdd</tt>,
722 <tt>FSub</tt>, and <tt>FMul</tt>. In the <tt>IRBuilder</tt> API,
723 <tt>CreateAdd</tt>, <tt>CreateSub</tt>, <tt>CreateMul</tt>, and
724 <tt>CreateNeg</tt> should only be used for integer arithmetic now;
725 <tt>CreateFAdd</tt>, <tt>CreateFSub</tt>, <tt>CreateFMul</tt>, and
726 <tt>CreateFNeg</tt> should now be used for floating-point arithmetic.</li>
Daniel Dunbar02e73132009-07-12 20:41:27 +0000727<li>The DynamicLibrary class can no longer be constructed, its functionality has
728 moved to static member functions.</li>
Dan Gohmane4d54d72009-07-15 19:59:19 +0000729<li><tt>raw_fd_ostream</tt>'s constructor for opening a given filename now
730 takes an extra <tt>Force</tt> argument. If <tt>Force</tt> is set to
731 <tt>false</tt>, an error will be reported if a file with the given name
732 already exists. If <tt>Force</tt> is set to <tt>true</tt>, the file will
733 be silently truncated (which is the behavior before this flag was
734 added).</li>
Torok Edwinf6fa8ae2009-07-21 20:27:10 +0000735<li><tt>SCEVHandle</tt> no longer exists, because reference counting is no
736longer done for <tt>SCEV*</tt> objects, instead <tt>const SCEV*</tt> should be
737used.</li>
Daniel Dunbar8b5ee822009-07-25 05:26:53 +0000738
Daniel Dunbar6e0d1cb2009-07-25 04:41:11 +0000739<li>Many APIs, notably <tt>llvm::Value</tt>, now use the <tt>StringRef</tt>
740and <tt>Twine</tt> classes instead of passing <tt>const char*</tt>
741or <tt>std::string</tt>, as described in
742the <a href="ProgrammersManual.html#string_apis">Programmer's Manual</a>. Most
Daniel Dunbar8b5ee822009-07-25 05:26:53 +0000743clients should be unaffected by this transition, unless they are used to <tt>Value::getName()</tt> returning a string. Here are some tips on updating to 2.6:
744 <ul>
745 <li><tt>getNameStr()</tt> is still available, and matches the old
746 behavior. Replacing <tt>getName()</tt> calls with this is an safe option,
747 although more efficient alternatives are now possible.</li>
748
749 <li>If you were just relying on <tt>getName()</tt> being able to be sent to
750 a <tt>std::ostream</tt>, consider migrating
751 to <tt>llvm::raw_ostream</tt>.</li>
752
753 <li>If you were using <tt>getName().c_str()</tt> to get a <tt>const
754 char*</tt> pointer to the name, you can use <tt>getName().data()</tt>.
755 Note that this string (as before), may not be the entire name if the
756 name containts embedded null characters.</li>
757
758 <li>If you were using operator plus on the result of <tt>getName()</tt> and
759 treating the result as an <tt>std::string</tt>, you can either
760 uses <tt>Twine::str</tt> to get the result as an <tt>std::string</tt>, or
761 could move to a <tt>Twine</tt> based design.</li>
Daniel Dunbar03d76512009-07-25 23:55:21 +0000762
763 <li><tt>isName()</tt> should be replaced with comparison
Benjamin Kramere15192b2009-08-05 15:42:44 +0000764 against <tt>getName()</tt> (this is now efficient).
Daniel Dunbar8b5ee822009-07-25 05:26:53 +0000765 </ul>
766</li>
767
Daniel Dunbara5881e32009-07-26 02:12:58 +0000768<li>The registration interfaces for backend Targets has changed (what was
Daniel Dunbard6b06b12009-07-26 05:41:39 +0000769previously TargetMachineRegistry). For backend authors, see the <a href="WritingAnLLVMBackend.html#TargetRegistration">Writing An LLVM Backend</a> guide. For clients, the notable API changes are:
770 <ul>
771 <li><tt>TargetMachineRegistry</tt> has been renamed
772 to <tt>TargetRegistry</tt>.</li>
773
774 <li>Clients should move to using the <tt>TargetRegistry::lookupTarget()</tt>
775 function to find targets.</li>
776 </ul>
777</li>
Daniel Dunbar8b5ee822009-07-25 05:26:53 +0000778
Torok Edwinf6fa8ae2009-07-21 20:27:10 +0000779<li>llvm-dis now fails if output file exists, instead of dumping to stdout.
Daniel Dunbar6e0d1cb2009-07-25 04:41:11 +0000780FIXME: describe any other tool changes due to the raw_fd_ostream change. FIXME:
781This is not an API change, maybe there should be a tool changes section?</li>
Torok Edwinf6fa8ae2009-07-21 20:27:10 +0000782<li>temporarely due to Context API change passes should call doInitialization()
783method of the pass they inherit from, otherwise Context is NULL.
784FIXME: remove this entry when this is no longer needed.<li>
Duncan Sandse2e4a892009-06-24 08:38:48 +0000785</ul>
786
787</div>
788
789
790
791<!-- *********************************************************************** -->
792<div class="doc_section">
793 <a name="portability">Portability and Supported Platforms</a>
794</div>
795<!-- *********************************************************************** -->
796
797<div class="doc_text">
798
799<p>LLVM is known to work on the following platforms:</p>
800
801<ul>
802<li>Intel and AMD machines (IA32, X86-64, AMD64, EMT-64) running Red Hat
Chris Lattner3e7b5ca2009-07-21 22:47:03 +0000803Linux, Fedora Core, FreeBSD and AuroraUX (and probably other unix-like systems).</li>
Duncan Sandse2e4a892009-06-24 08:38:48 +0000804<li>PowerPC and X86-based Mac OS X systems, running 10.3 and above in 32-bit
805and 64-bit modes.</li>
806<li>Intel and AMD machines running on Win32 using MinGW libraries (native).</li>
807<li>Intel and AMD machines running on Win32 with the Cygwin libraries (limited
808 support is available for native builds with Visual C++).</li>
809<li>Sun UltraSPARC workstations running Solaris 10.</li>
810<li>Alpha-based machines running Debian GNU/Linux.</li>
Duncan Sandse2e4a892009-06-24 08:38:48 +0000811</ul>
812
813<p>The core LLVM infrastructure uses GNU autoconf to adapt itself
814to the machine and operating system on which it is built. However, minor
815porting may be required to get LLVM to work on new platforms. We welcome your
816portability patches and reports of successful builds or error messages.</p>
817
818</div>
819
820<!-- *********************************************************************** -->
821<div class="doc_section">
822 <a name="knownproblems">Known Problems</a>
823</div>
824<!-- *********************************************************************** -->
825
826<div class="doc_text">
827
828<p>This section contains significant known problems with the LLVM system,
829listed by component. If you run into a problem, please check the <a
830href="http://llvm.org/bugs/">LLVM bug database</a> and submit a bug if
831there isn't already one.</p>
832
Chris Lattner3e7b5ca2009-07-21 22:47:03 +0000833<ul>
Chris Lattneraedb59a2009-07-21 23:17:26 +0000834<li>LLVM will not correctly compile on Solaris and/or OpenSolaris
Chris Lattner3e7b5ca2009-07-21 22:47:03 +0000835using the stock GCC 3.x.x series 'out the box',
836See: <a href="#brokengcc">Broken versions of GCC and other tools</a>.
837However, A <a href="http://pkg.auroraux.org/GCC">Modern GCC Build</a>
838for x86/x64 has been made available from the third party AuroraUX Project
Chris Lattner7b0a6812009-10-08 06:27:53 +0000839that has been meticulously tested for bootstrapping LLVM &amp; Clang.</li>
Chris Lattner3e7b5ca2009-07-21 22:47:03 +0000840</ul>
841
Duncan Sandse2e4a892009-06-24 08:38:48 +0000842</div>
843
844<!-- ======================================================================= -->
845<div class="doc_subsection">
846 <a name="experimental">Experimental features included with this release</a>
847</div>
848
849<div class="doc_text">
850
851<p>The following components of this LLVM release are either untested, known to
852be broken or unreliable, or are in early development. These components should
853not be relied on, and bugs should not be filed against them, but they may be
854useful to some people. In particular, if you would like to work on one of these
855components, please contact us on the <a
856href="http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev">LLVMdev list</a>.</p>
857
858<ul>
Dan Gohmand2cb3d22009-07-24 00:30:09 +0000859<li>The MSIL, Alpha, SPU, MIPS, and PIC16 backends are experimental.</li>
Duncan Sandse2e4a892009-06-24 08:38:48 +0000860<li>The <tt>llc</tt> "<tt>-filetype=asm</tt>" (the default) is the only
861 supported value for this option.</li>
862</ul>
863
864</div>
865
866<!-- ======================================================================= -->
867<div class="doc_subsection">
868 <a name="x86-be">Known problems with the X86 back-end</a>
869</div>
870
871<div class="doc_text">
872
873<ul>
874 <li>The X86 backend does not yet support
875 all <a href="http://llvm.org/PR879">inline assembly that uses the X86
876 floating point stack</a>. It supports the 'f' and 't' constraints, but not
877 'u'.</li>
878 <li>The X86 backend generates inefficient floating point code when configured
879 to generate code for systems that don't have SSE2.</li>
880 <li>Win64 code generation wasn't widely tested. Everything should work, but we
881 expect small issues to happen. Also, llvm-gcc cannot build the mingw64
882 runtime currently due
883 to <a href="http://llvm.org/PR2255">several</a>
884 <a href="http://llvm.org/PR2257">bugs</a> and due to lack of support for
885 the
886 'u' inline assembly constraint and for X87 floating point inline assembly.</li>
887 <li>The X86-64 backend does not yet support the LLVM IR instruction
888 <tt>va_arg</tt>. Currently, the llvm-gcc and front-ends support variadic
889 argument constructs on X86-64 by lowering them manually.</li>
890</ul>
891
892</div>
893
894<!-- ======================================================================= -->
895<div class="doc_subsection">
896 <a name="ppc-be">Known problems with the PowerPC back-end</a>
897</div>
898
899<div class="doc_text">
900
901<ul>
902<li>The Linux PPC32/ABI support needs testing for the interpreter and static
903compilation, and lacks support for debug information.</li>
904</ul>
905
906</div>
907
908<!-- ======================================================================= -->
909<div class="doc_subsection">
910 <a name="arm-be">Known problems with the ARM back-end</a>
911</div>
912
913<div class="doc_text">
914
915<ul>
Bob Wilson755cbe02009-08-12 21:19:49 +0000916<li>Support for the Advanced SIMD (Neon) instruction set is still incomplete
917and not well tested. Some features may not work at all, and the code quality
918may be poor in some cases.</li>
Duncan Sandse2e4a892009-06-24 08:38:48 +0000919<li>Thumb mode works only on ARMv6 or higher processors. On sub-ARMv6
920processors, thumb programs can crash or produce wrong
921results (<a href="http://llvm.org/PR1388">PR1388</a>).</li>
922<li>Compilation for ARM Linux OABI (old ABI) is supported but not fully tested.
923</li>
Duncan Sandse2e4a892009-06-24 08:38:48 +0000924</ul>
925
926</div>
927
928<!-- ======================================================================= -->
929<div class="doc_subsection">
930 <a name="sparc-be">Known problems with the SPARC back-end</a>
931</div>
932
933<div class="doc_text">
934
935<ul>
936<li>The SPARC backend only supports the 32-bit SPARC ABI (-m32); it does not
937 support the 64-bit SPARC ABI (-m64).</li>
938</ul>
939
940</div>
941
942<!-- ======================================================================= -->
943<div class="doc_subsection">
944 <a name="mips-be">Known problems with the MIPS back-end</a>
945</div>
946
947<div class="doc_text">
948
949<ul>
950<li>The O32 ABI is not fully supported.</li>
951<li>64-bit MIPS targets are not supported yet.</li>
952</ul>
953
954</div>
955
956<!-- ======================================================================= -->
957<div class="doc_subsection">
958 <a name="alpha-be">Known problems with the Alpha back-end</a>
959</div>
960
961<div class="doc_text">
962
963<ul>
964
965<li>On 21164s, some rare FP arithmetic sequences which may trap do not have the
966appropriate nops inserted to ensure restartability.</li>
967
968</ul>
969</div>
970
971<!-- ======================================================================= -->
972<div class="doc_subsection">
Duncan Sandse2e4a892009-06-24 08:38:48 +0000973 <a name="c-be">Known problems with the C back-end</a>
974</div>
975
976<div class="doc_text">
977
978<ul>
979<li><a href="http://llvm.org/PR802">The C backend has only basic support for
980 inline assembly code</a>.</li>
981<li><a href="http://llvm.org/PR1658">The C backend violates the ABI of common
982 C++ programs</a>, preventing intermixing between C++ compiled by the CBE and
983 C++ code compiled with <tt>llc</tt> or native compilers.</li>
984<li>The C backend does not support all exception handling constructs.</li>
985<li>The C backend does not support arbitrary precision integers.</li>
986</ul>
987
988</div>
989
990
991<!-- ======================================================================= -->
992<div class="doc_subsection">
993 <a name="c-fe">Known problems with the llvm-gcc C front-end</a>
994</div>
995
996<div class="doc_text">
997
998<p>llvm-gcc does not currently support <a href="http://llvm.org/PR869">Link-Time
999Optimization</a> on most platforms "out-of-the-box". Please inquire on the
1000LLVMdev mailing list if you are interested.</p>
1001
1002<p>The only major language feature of GCC not supported by llvm-gcc is
1003 the <tt>__builtin_apply</tt> family of builtins. However, some extensions
1004 are only supported on some targets. For example, trampolines are only
1005 supported on some targets (these are used when you take the address of a
1006 nested function).</p>
1007
1008<p>If you run into GCC extensions which are not supported, please let us know.
1009</p>
1010
1011</div>
1012
1013<!-- ======================================================================= -->
1014<div class="doc_subsection">
1015 <a name="c++-fe">Known problems with the llvm-gcc C++ front-end</a>
1016</div>
1017
1018<div class="doc_text">
1019
1020<p>The C++ front-end is considered to be fully
1021tested and works for a number of non-trivial programs, including LLVM
1022itself, Qt, Mozilla, etc.</p>
1023
1024<ul>
1025<li>Exception handling works well on the X86 and PowerPC targets. Currently
1026 only Linux and Darwin targets are supported (both 32 and 64 bit).</li>
1027</ul>
1028
1029</div>
1030
1031<!-- ======================================================================= -->
1032<div class="doc_subsection">
1033 <a name="fortran-fe">Known problems with the llvm-gcc Fortran front-end</a>
1034</div>
1035
1036<div class="doc_text">
1037<ul>
1038<li>Fortran support generally works, but there are still several unresolved bugs
1039 in Bugzilla. Please see the tools/gfortran component for details.</li>
1040</ul>
1041</div>
1042
1043<!-- ======================================================================= -->
1044<div class="doc_subsection">
1045 <a name="ada-fe">Known problems with the llvm-gcc Ada front-end</a>
1046</div>
1047
1048<div class="doc_text">
1049The llvm-gcc 4.2 Ada compiler works fairly well; however, this is not a mature
1050technology, and problems should be expected.
1051<ul>
1052<li>The Ada front-end currently only builds on X86-32. This is mainly due
1053to lack of trampoline support (pointers to nested functions) on other platforms.
1054However, it <a href="http://llvm.org/PR2006">also fails to build on X86-64</a>
1055which does support trampolines.</li>
1056<li>The Ada front-end <a href="http://llvm.org/PR2007">fails to bootstrap</a>.
1057This is due to lack of LLVM support for <tt>setjmp</tt>/<tt>longjmp</tt> style
1058exception handling, which is used internally by the compiler.
1059Workaround: configure with --disable-bootstrap.</li>
1060<li>The c380004, <a href="http://llvm.org/PR2010">c393010</a>
1061and <a href="http://llvm.org/PR2421">cxg2021</a> ACATS tests fail
1062(c380004 also fails with gcc-4.2 mainline).
1063If the compiler is built with checks disabled then <a href="http://llvm.org/PR2010">c393010</a>
1064causes the compiler to go into an infinite loop, using up all system memory.</li>
1065<li>Some GCC specific Ada tests continue to crash the compiler.</li>
1066<li>The -E binder option (exception backtraces)
1067<a href="http://llvm.org/PR1982">does not work</a> and will result in programs
1068crashing if an exception is raised. Workaround: do not use -E.</li>
1069<li>Only discrete types <a href="http://llvm.org/PR1981">are allowed to start
1070or finish at a non-byte offset</a> in a record. Workaround: do not pack records
1071or use representation clauses that result in a field of a non-discrete type
1072starting or finishing in the middle of a byte.</li>
1073<li>The <tt>lli</tt> interpreter <a href="http://llvm.org/PR2009">considers
1074'main' as generated by the Ada binder to be invalid</a>.
1075Workaround: hand edit the file to use pointers for <tt>argv</tt> and
1076<tt>envp</tt> rather than integers.</li>
1077<li>The <tt>-fstack-check</tt> option <a href="http://llvm.org/PR2008">is
1078ignored</a>.</li>
1079</ul>
1080</div>
1081
Erick Tryzelaar17167be2009-09-28 04:42:55 +00001082<!-- ======================================================================= -->
1083<div class="doc_subsection">
1084 <a name="ocaml-bindingse">Known problems with the O'Caml bindings</a>
1085</div>
1086
1087<div class="doc_text">
1088
1089<p>The Llvm.Linkage module is broken, and has incorrect values. Only
1090Llvm.Linkage.External, Llvm.Linkage.Available_externally, and
1091Llvm.Linkage.Link_once will be correct. If you need any of the other linkage
1092modes, you'll have to write an external C library in order to expose the
1093functionality. This has been fixed in the trunk.</p>
1094</div>
1095
Duncan Sandse2e4a892009-06-24 08:38:48 +00001096<!-- *********************************************************************** -->
1097<div class="doc_section">
1098 <a name="additionalinfo">Additional Information</a>
1099</div>
1100<!-- *********************************************************************** -->
1101
1102<div class="doc_text">
1103
1104<p>A wide variety of additional information is available on the <a
1105href="http://llvm.org">LLVM web page</a>, in particular in the <a
1106href="http://llvm.org/docs/">documentation</a> section. The web page also
1107contains versions of the API documentation which is up-to-date with the
1108Subversion version of the source code.
1109You can access versions of these documents specific to this release by going
1110into the "<tt>llvm/doc/</tt>" directory in the LLVM tree.</p>
1111
1112<p>If you have any questions or comments about LLVM, please feel free to contact
1113us via the <a href="http://llvm.org/docs/#maillist"> mailing
1114lists</a>.</p>
1115
1116</div>
1117
1118<!-- *********************************************************************** -->
1119
1120<hr>
1121<address>
1122 <a href="http://jigsaw.w3.org/css-validator/check/referer"><img
1123 src="http://jigsaw.w3.org/css-validator/images/vcss-blue" alt="Valid CSS"></a>
1124 <a href="http://validator.w3.org/check/referer"><img
1125 src="http://www.w3.org/Icons/valid-html401-blue" alt="Valid HTML 4.01"></a>
1126
1127 <a href="http://llvm.org/">LLVM Compiler Infrastructure</a><br>
1128 Last modified: $Date$
1129</address>
1130
1131</body>
1132</html>