blob: b0e3ba28e54ba3170be5d6151a381dd749476c24 [file] [log] [blame]
Misha Brukman80731b92003-11-22 00:38:41 +00001<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
2 "http://www.w3.org/TR/html4/strict.dtd">
3<html>
4<head>
Reid Spencere4190fa2004-11-18 18:38:58 +00005 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
Misha Brukman80731b92003-11-22 00:38:41 +00006 <link rel="stylesheet" href="llvm.css" type="text/css">
Chris Lattnere38ac152008-02-12 06:29:45 +00007 <title>LLVM 2.3 Release Notes</title>
Misha Brukman80731b92003-11-22 00:38:41 +00008</head>
9<body>
Chris Lattner3d482502003-10-02 04:57:28 +000010
Chris Lattnere38ac152008-02-12 06:29:45 +000011<div class="doc_title">LLVM 2.3 Release Notes</div>
Chris Lattner3d482502003-10-02 04:57:28 +000012
13<ol>
Misha Brukman80731b92003-11-22 00:38:41 +000014 <li><a href="#intro">Introduction</a></li>
15 <li><a href="#whatsnew">What's New?</a></li>
Chris Lattner77a51732004-04-30 22:17:12 +000016 <li><a href="GettingStarted.html">Installation Instructions</a></li>
Misha Brukman80731b92003-11-22 00:38:41 +000017 <li><a href="#portability">Portability and Supported Platforms</a></li>
Chris Lattner3d482502003-10-02 04:57:28 +000018 <li><a href="#knownproblems">Known Problems</a>
Misha Brukman80731b92003-11-22 00:38:41 +000019 <li><a href="#additionalinfo">Additional Information</a></li>
Chris Lattner3d482502003-10-02 04:57:28 +000020</ol>
21
Chris Lattner020e1fc2004-05-23 21:07:27 +000022<div class="doc_author">
Chris Lattnera69595e2005-10-29 07:07:09 +000023 <p>Written by the <a href="http://llvm.org">LLVM Team</a><p>
Misha Brukman80731b92003-11-22 00:38:41 +000024</div>
Chris Lattner3d482502003-10-02 04:57:28 +000025
Chris Lattnere38ac152008-02-12 06:29:45 +000026<h1><font color="red">THIS IS A WORK IN PROGRESS FOR LLVM 2.3 (currently in
27progress on SVN HEAD)</font></h1>
Chris Lattner0ec35042008-02-06 18:00:48 +000028
Chris Lattner3d482502003-10-02 04:57:28 +000029<!-- *********************************************************************** -->
Misha Brukman80731b92003-11-22 00:38:41 +000030<div class="doc_section">
31 <a name="intro">Introduction</a>
32</div>
Chris Lattner3d482502003-10-02 04:57:28 +000033<!-- *********************************************************************** -->
34
Misha Brukman80731b92003-11-22 00:38:41 +000035<div class="doc_text">
36
37<p>This document contains the release notes for the LLVM compiler
Chris Lattnere38ac152008-02-12 06:29:45 +000038infrastructure, release 2.3. Here we describe the status of LLVM, including
Chris Lattnerbee7b322007-05-23 04:39:32 +000039major improvements from the previous release and any known problems. All LLVM
Chris Lattner98a33492007-05-09 04:58:11 +000040releases may be downloaded from the <a href="http://llvm.org/releases/">LLVM
Chris Lattnerbee7b322007-05-23 04:39:32 +000041releases web site</a>.</p>
Chris Lattner62495762003-10-02 16:38:05 +000042
Chris Lattnerb5bb5972004-12-07 08:04:13 +000043<p>For more information about LLVM, including information about the latest
Chris Lattnera69595e2005-10-29 07:07:09 +000044release, please check out the <a href="http://llvm.org/">main LLVM
Chris Lattnere7525b52003-10-07 21:38:31 +000045web site</a>. If you have questions or comments, the <a
46href="http://mail.cs.uiuc.edu/mailman/listinfo/llvmdev">LLVM developer's mailing
Misha Brukman80731b92003-11-22 00:38:41 +000047list</a> is a good place to send them.</p>
Chris Lattner3d482502003-10-02 04:57:28 +000048
Reid Spencerc7f87f22007-07-09 08:04:31 +000049<p>Note that if you are reading this file from a Subversion checkout or the
Chris Lattner0a1fd102007-09-21 03:54:09 +000050main LLVM web page, this document applies to the <i>next</i> release, not the
51current one. To see the release notes for a specific releases, please see the
52<a href="http://llvm.org/releases/">releases page</a>.</p>
Misha Brukman80731b92003-11-22 00:38:41 +000053
54</div>
Chris Lattner3d482502003-10-02 04:57:28 +000055
56<!-- *********************************************************************** -->
Misha Brukman80731b92003-11-22 00:38:41 +000057<div class="doc_section">
58 <a name="whatsnew">What's New?</a>
59</div>
Chris Lattner3d482502003-10-02 04:57:28 +000060<!-- *********************************************************************** -->
61
Misha Brukman80731b92003-11-22 00:38:41 +000062<div class="doc_text">
63
Chris Lattnere38ac152008-02-12 06:29:45 +000064<p>This is the fourteenth public release of the LLVM Compiler Infrastructure.
65It includes many features and refinements from LLVM 2.2.</p>
Chris Lattnerba7bd472003-12-06 20:22:41 +000066
Chris Lattner21a90402004-05-24 04:50:25 +000067</div>
68
Chris Lattnere38ac152008-02-12 06:29:45 +000069<!-- Unfinished features in 2.3:
Chris Lattner2b8a52e2008-02-10 07:46:44 +000070 Index Set Splitting not enabled by default
71 Machine LICM
72 Machine Sinking
73 LegalizeDAGTypes
74 -->
75
Chris Lattnerba7bd472003-12-06 20:22:41 +000076<!--=========================================================================-->
Chris Lattner406bddf2005-05-15 05:44:51 +000077<div class="doc_subsection">
Chris Lattnere38ac152008-02-12 06:29:45 +000078<a name="deprecation">Removed features in LLVM 2.3</a>
Chris Lattnera2735862008-02-10 07:04:35 +000079</div>
80
81<div class="doc_text">
82
Chris Lattnere38ac152008-02-12 06:29:45 +000083<p>LLVM 2.2 was the last LLVM release to support llvm-gcc 4.0 and llvm-upgrade.
84llvm-gcc 4.0 has been replaced with llvm-gcc 4.2. llvm-upgrade was useful for
85upgrading llvm 1.9 files to llvm 2.x syntax, but you can always use a previous
86llvm release to do this.</p>
Chris Lattnera2735862008-02-10 07:04:35 +000087
88</div>
89
90<!--=========================================================================-->
91<div class="doc_subsection">
Chris Lattnere38ac152008-02-12 06:29:45 +000092<a name="frontends">llvm-gcc 4.2 and clang</a>
Chris Lattner9f871732006-04-18 06:18:36 +000093</div>
94
Chris Lattner97beb512007-05-14 06:56:09 +000095<div class="doc_text">
Chris Lattner727c3742007-05-18 06:33:02 +000096
Chris Lattnere38ac152008-02-12 06:29:45 +000097<p>LLVM 2.3 fully supports llvm-gcc 4.2 front-end. </p>
Chris Lattner97beb512007-05-14 06:56:09 +000098
Chris Lattnercdc44ed2008-02-06 18:00:06 +000099<p>The <a href="http://clang.llvm.org/">clang project</a> is an effort to build
100a set of new 'llvm native' front-end technologies for the LLVM optimizer
101and code generator. Currently, its C and Objective-C support is maturing
102nicely, and it has advanced source-to-source analysis and transformation
103capabilities. If you are interested in building source-level tools for C and
104Objective-C (and eventually C++), you should take a look. However, note that
Chris Lattnere38ac152008-02-12 06:29:45 +0000105clang is not an official part of the LLVM 2.3 release. If you are interested in
Chris Lattner2b8a52e2008-02-10 07:46:44 +0000106this project, please see its <a href="http://clang.llvm.org/">web site</a>.</p>
Chris Lattnercdc44ed2008-02-06 18:00:06 +0000107
108</div>
109
110<!--=========================================================================-->
111<div class="doc_subsection">
112<a name="majorfeatures">Major New Features</a>
113</div>
114
115<div class="doc_text">
116
Chris Lattnere38ac152008-02-12 06:29:45 +0000117<p>LLVM 2.3 includes several major new capabilities:</p>
Chris Lattner97beb512007-05-14 06:56:09 +0000118
119<ul>
Chris Lattner458e79f2008-02-10 08:18:42 +0000120</ul>
121
Chris Lattner97beb512007-05-14 06:56:09 +0000122</div>
123
Chris Lattner0a1fd102007-09-21 03:54:09 +0000124<!--=========================================================================-->
125<div class="doc_subsection">
Chris Lattnerdd6acc02008-02-10 08:17:19 +0000126<a name="coreimprovements">LLVM Core Improvements</a>
127</div>
128
129<div class="doc_text">
130<p>New features include:
131</p>
132
133<ul>
Chris Lattnerdd6acc02008-02-10 08:17:19 +0000134
135</ul>
136
137</div>
138
139<!--=========================================================================-->
140<div class="doc_subsection">
Chris Lattner0a1fd102007-09-21 03:54:09 +0000141<a name="codegen">Code Generator Improvements</a>
142</div>
143
144<div class="doc_text">
145
Chris Lattner2b8a52e2008-02-10 07:46:44 +0000146<p>We put a significant amount of work into the code generator infrastructure,
147which allows us to implement more aggressive algorithms and make it run
148faster:</p>
Chris Lattner4734a352007-09-26 05:44:21 +0000149
Chris Lattner0a1fd102007-09-21 03:54:09 +0000150<ul>
Chris Lattnere38ac152008-02-12 06:29:45 +0000151<li>MemOperand in the code generator.</li>
Chris Lattner2b8a52e2008-02-10 07:46:44 +0000152</ul>
153
154</div>
155
156<!--=========================================================================-->
157<div class="doc_subsection">
158<a name="optimizer">Optimizer Improvements</a>
159</div>
160
161<div class="doc_text">
162
Chris Lattnerdd6acc02008-02-10 08:17:19 +0000163<p>In addition to a huge array of bug fixes and minor performance tweaks, the
Chris Lattnere38ac152008-02-12 06:29:45 +0000164LLVM 2.3 optimizers support a few major enhancements:</p>
Chris Lattner2b8a52e2008-02-10 07:46:44 +0000165
166<ul>
167
Chris Lattnere38ac152008-02-12 06:29:45 +0000168<li>Index set splitting on by default.</li>
Chris Lattner20ed4ef552008-02-09 22:58:07 +0000169
Chris Lattner0a1fd102007-09-21 03:54:09 +0000170</ul>
171
172</div>
173
174
175<!--=========================================================================-->
176<div class="doc_subsection">
177<a name="targetspecific">Target Specific Improvements</a>
178</div>
Chris Lattner727c3742007-05-18 06:33:02 +0000179
Chris Lattner89e761c2006-04-18 06:32:08 +0000180<div class="doc_text">
Chris Lattnerdd6acc02008-02-10 08:17:19 +0000181<p>New target-specific features include:
Chris Lattner97beb512007-05-14 06:56:09 +0000182</p>
Chris Lattnerb81f10e2006-11-18 07:51:14 +0000183
184<ul>
Chris Lattner8ce1ba42007-05-17 21:41:31 +0000185</ul>
Chris Lattner0a1fd102007-09-21 03:54:09 +0000186
Chris Lattner8ce1ba42007-05-17 21:41:31 +0000187</div>
Chris Lattner72a269f2006-03-03 00:34:26 +0000188
Chris Lattner0a1fd102007-09-21 03:54:09 +0000189<!--=========================================================================-->
190<div class="doc_subsection">
191<a name="otherimprovements">Other Improvements</a>
192</div>
193
194<div class="doc_text">
195<p>New features include:
196</p>
197
198<ul>
Chris Lattner0a1fd102007-09-21 03:54:09 +0000199</ul>
200
201</div>
Chris Lattner72a269f2006-03-03 00:34:26 +0000202
Chris Lattner62495762003-10-02 16:38:05 +0000203<!-- *********************************************************************** -->
Misha Brukman80731b92003-11-22 00:38:41 +0000204<div class="doc_section">
205 <a name="portability">Portability and Supported Platforms</a>
206</div>
Chris Lattner62495762003-10-02 16:38:05 +0000207<!-- *********************************************************************** -->
208
Misha Brukman80731b92003-11-22 00:38:41 +0000209<div class="doc_text">
210
John Criswell64307722004-12-08 20:35:47 +0000211<p>LLVM is known to work on the following platforms:</p>
Chris Lattner2c7b0872004-06-01 18:22:41 +0000212
213<ul>
Chris Lattnerbee7b322007-05-23 04:39:32 +0000214<li>Intel and AMD machines running Red Hat Linux, Fedora Core and FreeBSD
Reid Spencer9803b402005-05-17 02:47:27 +0000215 (and probably other unix-like systems).</li>
Chris Lattner7422bce2008-02-06 06:30:34 +0000216<li>PowerPC and X86-based Mac OS X systems, running 10.3 and above in 32-bit and
Chris Lattnerb81f10e2006-11-18 07:51:14 +0000217 64-bit modes.</li>
Chris Lattnercdc44ed2008-02-06 18:00:06 +0000218<li>Intel and AMD machines running on Win32 using MinGW libraries (native).</li>
Chris Lattnerbee7b322007-05-23 04:39:32 +0000219<li>Intel and AMD machines running on Win32 with the Cygwin libraries (limited
220 support is available for native builds with Visual C++).</li>
221<li>Sun UltraSPARC workstations running Solaris 8.</li>
John Criswelld5234922005-05-13 20:28:15 +0000222<li>Alpha-based machines running Debian GNU/Linux.</li>
223<li>Itanium-based machines running Linux and HP-UX.</li>
Chris Lattner2c7b0872004-06-01 18:22:41 +0000224</ul>
225
Brian Gaekee3e557e2004-05-09 05:28:35 +0000226<p>The core LLVM infrastructure uses
227<a href="http://www.gnu.org/software/autoconf/">GNU autoconf</a> to adapt itself
228to the machine and operating system on which it is built. However, minor
229porting may be required to get LLVM to work on new platforms. We welcome your
230portability patches and reports of successful builds or error messages.</p>
Chris Lattner3d482502003-10-02 04:57:28 +0000231
Misha Brukman80731b92003-11-22 00:38:41 +0000232</div>
Chris Lattner3d482502003-10-02 04:57:28 +0000233
234<!-- *********************************************************************** -->
Misha Brukman80731b92003-11-22 00:38:41 +0000235<div class="doc_section">
236 <a name="knownproblems">Known Problems</a>
237</div>
Chris Lattner3d482502003-10-02 04:57:28 +0000238<!-- *********************************************************************** -->
239
Misha Brukman80731b92003-11-22 00:38:41 +0000240<div class="doc_text">
241
242<p>This section contains all known problems with the LLVM system, listed by
Chris Lattner3d482502003-10-02 04:57:28 +0000243component. As new problems are discovered, they will be added to these
Chris Lattnerb84f3322003-12-12 21:22:16 +0000244sections. If you run into a problem, please check the <a
Chris Lattnera69595e2005-10-29 07:07:09 +0000245href="http://llvm.org/bugs/">LLVM bug database</a> and submit a bug if
Chris Lattnerb84f3322003-12-12 21:22:16 +0000246there isn't already one.</p>
Chris Lattner3d482502003-10-02 04:57:28 +0000247
Misha Brukman80731b92003-11-22 00:38:41 +0000248</div>
Chris Lattner3d482502003-10-02 04:57:28 +0000249
Chris Lattnerb911de42004-03-14 02:03:02 +0000250<!-- ======================================================================= -->
251<div class="doc_subsection">
252 <a name="experimental">Experimental features included with this release</a>
253</div>
Chris Lattner3d482502003-10-02 04:57:28 +0000254
Chris Lattnerb911de42004-03-14 02:03:02 +0000255<div class="doc_text">
256
Misha Brukmanfa50a222004-05-12 21:46:05 +0000257<p>The following components of this LLVM release are either untested, known to
258be broken or unreliable, or are in early development. These components should
259not be relied on, and bugs should not be filed against them, but they may be
260useful to some people. In particular, if you would like to work on one of these
Chris Lattnere38ac152008-02-12 06:29:45 +0000261components, please contact us on the <a
262href="http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev">LLVMdev list</a>.</p>
Chris Lattnerb911de42004-03-14 02:03:02 +0000263
264<ul>
Chris Lattnere38ac152008-02-12 06:29:45 +0000265<li>The MSIL, IA64, Alpha, SPU, and MIPS backends are experimental.</li>
Chris Lattner7422bce2008-02-06 06:30:34 +0000266<li>The LLC "<tt>-filetype=asm</tt>" (the default) is the only supported
267 value for this option.</li>
268<li>The llvmc tool is not supported.</li>
Chris Lattnerb911de42004-03-14 02:03:02 +0000269</ul>
270
271</div>
Chris Lattner3d482502003-10-02 04:57:28 +0000272
Misha Brukman80731b92003-11-22 00:38:41 +0000273<!-- ======================================================================= -->
274<div class="doc_subsection">
Chris Lattnerb81f10e2006-11-18 07:51:14 +0000275 <a name="x86-be">Known problems with the X86 back-end</a>
John Criswell3bdbd302005-11-08 21:11:33 +0000276</div>
277
278<div class="doc_text">
279
280<ul>
Chris Lattnerb81f10e2006-11-18 07:51:14 +0000281<li>The X86 backend does not yet support <a href="http://llvm.org/PR879">inline
Chris Lattner98a33492007-05-09 04:58:11 +0000282 assembly that uses the X86 floating point stack</a>.</li>
Chris Lattner8e061162007-09-26 06:01:35 +0000283<li>The X86 backend occasionally has <a href="http://llvm.org/PR1649">alignment
284 problems</a> on operating systems that don't require 16-byte stack alignment
285 (including most non-darwin OS's like linux).</li>
Chris Lattnerdd6acc02008-02-10 08:17:19 +0000286<li>The X86 backend generates inefficient floating point code when configured to
287 generate code for systems that don't have SSE2.</li>
Chris Lattnerb81f10e2006-11-18 07:51:14 +0000288</ul>
289
290</div>
291
292<!-- ======================================================================= -->
293<div class="doc_subsection">
294 <a name="ppc-be">Known problems with the PowerPC back-end</a>
295</div>
296
297<div class="doc_text">
298
299<ul>
Nicolas Geoffray77d99502007-05-15 09:21:28 +0000300<li>The Linux PPC32/ABI support needs testing for the interpreter and static
Chris Lattnerbee7b322007-05-23 04:39:32 +0000301compilation, and lacks support for debug information.</li>
Chris Lattnerb81f10e2006-11-18 07:51:14 +0000302</ul>
303
304</div>
305
306<!-- ======================================================================= -->
307<div class="doc_subsection">
Chris Lattner97beb512007-05-14 06:56:09 +0000308 <a name="arm-be">Known problems with the ARM back-end</a>
309</div>
310
311<div class="doc_text">
312
313<ul>
Chris Lattnerbee7b322007-05-23 04:39:32 +0000314<li>Thumb mode works only on ARMv6 or higher processors. On sub-ARMv6
Duncan Sands47fc0a22007-09-26 15:59:54 +0000315processors, thumb programs can crash or produce wrong
Chris Lattnerbee7b322007-05-23 04:39:32 +0000316results (<a href="http://llvm.org/PR1388">PR1388</a>).</li>
Chris Lattner97beb512007-05-14 06:56:09 +0000317<li>Compilation for ARM Linux OABI (old ABI) is supported, but not fully tested.
318</li>
Chris Lattnerdd6acc02008-02-10 08:17:19 +0000319<li>There is a bug in QEMU-ARM (&lt;= 0.9.0) which causes it to incorrectly execute
Chris Lattnerbee7b322007-05-23 04:39:32 +0000320programs compiled with LLVM. Please use more recent versions of QEMU.</li>
Chris Lattner97beb512007-05-14 06:56:09 +0000321</ul>
322
323</div>
324
325<!-- ======================================================================= -->
326<div class="doc_subsection">
Chris Lattnerb81f10e2006-11-18 07:51:14 +0000327 <a name="sparc-be">Known problems with the SPARC back-end</a>
328</div>
329
330<div class="doc_text">
331
332<ul>
333<li>The SPARC backend only supports the 32-bit SPARC ABI (-m32), it does not
334 support the 64-bit SPARC ABI (-m64).</li>
335</ul>
336
337</div>
338
339<!-- ======================================================================= -->
340<div class="doc_subsection">
Chris Lattnerb81f10e2006-11-18 07:51:14 +0000341 <a name="alpha-be">Known problems with the Alpha back-end</a>
342</div>
343
344<div class="doc_text">
345
346<ul>
347
348<li>On 21164s, some rare FP arithmetic sequences which may trap do not have the
349appropriate nops inserted to ensure restartability.</li>
350
John Criswell3bdbd302005-11-08 21:11:33 +0000351</ul>
352</div>
353
Chris Lattnerb81f10e2006-11-18 07:51:14 +0000354<!-- ======================================================================= -->
355<div class="doc_subsection">
356 <a name="ia64-be">Known problems with the IA64 back-end</a>
357</div>
358
359<div class="doc_text">
360
361<ul>
362
363<li>C++ programs are likely to fail on IA64, as calls to <tt>setjmp</tt> are
364made where the argument is not 16-byte aligned, as required on IA64. (Strictly
365speaking this is not a bug in the IA64 back-end; it will also be encountered
366when building C++ programs using the C back-end.)</li>
367
368<li>The C++ front-end does not use <a href="http://llvm.org/PR406">IA64
369ABI compliant layout of v-tables</a>. In particular, it just stores function
370pointers instead of function descriptors in the vtable. This bug prevents
371mixing C++ code compiled with LLVM with C++ objects compiled by other C++
372compilers.</li>
373
374<li>There are a few ABI violations which will lead to problems when mixing LLVM
375output with code built with other compilers, particularly for floating-point
376programs.</li>
377
378<li>Defining vararg functions is not supported (but calling them is ok).</li>
379
Chris Lattner98a33492007-05-09 04:58:11 +0000380<li>The Itanium backend has bitrotted somewhat.</li>
Chris Lattnerb81f10e2006-11-18 07:51:14 +0000381</ul>
382
383</div>
384
385<!-- ======================================================================= -->
386<div class="doc_subsection">
Chris Lattner97beb512007-05-14 06:56:09 +0000387 <a name="c-be">Known problems with the C back-end</a>
Chris Lattnerb81f10e2006-11-18 07:51:14 +0000388</div>
389
390<div class="doc_text">
391
392<ul>
Chris Lattner97beb512007-05-14 06:56:09 +0000393<li><a href="http://llvm.org/PR802">The C backend does not support inline
394 assembly code</a>.</li>
Chris Lattner8e061162007-09-26 06:01:35 +0000395<li><a href="http://llvm.org/PR1126">The C backend does not support vectors
396 yet</a>.</li>
Chris Lattner8e061162007-09-26 06:01:35 +0000397<li><a href="http://llvm.org/PR1658">The C backend violates the ABI of common
398 C++ programs</a>, preventing intermixing between C++ compiled by the CBE and
399 C++ code compiled with LLC or native compilers.</li>
Duncan Sandse09506a2008-02-10 13:40:55 +0000400<li>The C backend does not support all exception handling constructs.</li>
Chris Lattnerb81f10e2006-11-18 07:51:14 +0000401</ul>
402
403</div>
John Criswell3bdbd302005-11-08 21:11:33 +0000404
Misha Brukman80731b92003-11-22 00:38:41 +0000405
406<!-- ======================================================================= -->
407<div class="doc_subsection">
408 <a name="c-fe">Known problems with the C front-end</a>
409</div>
Chris Lattner178f3db2003-10-02 05:07:23 +0000410
Chris Lattner3d482502003-10-02 04:57:28 +0000411<!-- _______________________________________________________________________ -->
Chris Lattner5a8a7282003-12-14 05:03:43 +0000412<div class="doc_subsubsection">Bugs</div>
Chris Lattner3d482502003-10-02 04:57:28 +0000413
Misha Brukman80731b92003-11-22 00:38:41 +0000414<div class="doc_text">
Chris Lattner72a269f2006-03-03 00:34:26 +0000415
Chris Lattnercdc44ed2008-02-06 18:00:06 +0000416<p>llvm-gcc does not currently support <a href="http://llvm.org/PR869">Link-Time
417Optimization</a> on most platforms "out-of-the-box". Please inquire on the
Chris Lattner97beb512007-05-14 06:56:09 +0000418llvmdev mailing list if you are interested.</p>
Chris Lattner44124232006-08-08 17:27:28 +0000419
Misha Brukman80731b92003-11-22 00:38:41 +0000420</div>
421
422<!-- _______________________________________________________________________ -->
423<div class="doc_subsubsection">
424 Notes
425</div>
426
427<div class="doc_text">
Misha Brukman80731b92003-11-22 00:38:41 +0000428<ul>
429
Chris Lattner2f131fe2007-05-17 22:02:24 +0000430<li><p>llvm-gcc does <b>not</b> support <tt>__builtin_apply</tt> yet.
431 See <a href="http://gcc.gnu.org/onlinedocs/gcc/Constructing-Calls.html#Constructing%20Calls">Constructing Calls</a>: Dispatching a call to another function.</p>
432</li>
Chris Lattner3d482502003-10-02 04:57:28 +0000433
Duncan Sandsea7a3262007-05-18 09:04:20 +0000434<li><p>llvm-gcc <b>partially</b> supports these GCC extensions:</p>
Chris Lattner3d482502003-10-02 04:57:28 +0000435 <ol>
Duncan Sands47fc0a22007-09-26 15:59:54 +0000436 <li><a href="http://gcc.gnu.org/onlinedocs/gcc/Nested-Functions.html#Nested%20Functions">Nested Functions</a>:
437
438 As in Algol and Pascal, lexical scoping of functions.
439 Nested functions are supported, but llvm-gcc does not support
Duncan Sandse09506a2008-02-10 13:40:55 +0000440 taking the address of a nested function (except on X86 targets)
Duncan Sands47fc0a22007-09-26 15:59:54 +0000441 or non-local gotos.</li>
Chris Lattner3d482502003-10-02 04:57:28 +0000442
443 <li><a href="http://gcc.gnu.org/onlinedocs/gcc/Function-Attributes.html#Function%20Attributes">Function Attributes</a>:
Misha Brukman80731b92003-11-22 00:38:41 +0000444
John Criswell86a3a482003-12-18 16:43:17 +0000445 Declaring that functions have no side effects or that they can never
Misha Brukman80731b92003-11-22 00:38:41 +0000446 return.<br>
447
Anton Korobeynikovb8a47242007-11-16 11:12:01 +0000448 <b>Supported:</b> <tt>alias</tt>, <tt>always_inline</tt>, <tt>cdecl</tt>,
449 <tt>const</tt>, <tt>constructor</tt>, <tt>destructor</tt>,
Anton Korobeynikove7cbbfc2006-11-18 08:04:48 +0000450 <tt>deprecated</tt>, <tt>fastcall</tt>, <tt>format</tt>,
Anton Korobeynikovb8a47242007-11-16 11:12:01 +0000451 <tt>format_arg</tt>, <tt>non_null</tt>, <tt>noinline</tt>,
Chris Lattnerdd6acc02008-02-10 08:17:19 +0000452 <tt>noreturn</tt>, <tt>nothrow</tt>, <tt>pure</tt>, <tt>regparm</tt>
Anton Korobeynikovc7f9f3d2007-01-23 12:35:46 +0000453 <tt>section</tt>, <tt>stdcall</tt>, <tt>unused</tt>, <tt>used</tt>,
454 <tt>visibility</tt>, <tt>warn_unused_result</tt>, <tt>weak</tt><br>
Misha Brukman80731b92003-11-22 00:38:41 +0000455
Chris Lattnerdd6acc02008-02-10 08:17:19 +0000456 <b>Ignored:</b> <tt>malloc</tt>,
Anton Korobeynikovb8a47242007-11-16 11:12:01 +0000457 <tt>no_instrument_function</tt></li>
Misha Brukman80731b92003-11-22 00:38:41 +0000458 </ol>
Chris Lattner2f131fe2007-05-17 22:02:24 +0000459</li>
Chris Lattner3d482502003-10-02 04:57:28 +0000460
Misha Brukman7cb4e382003-11-22 01:00:11 +0000461</ul>
Chris Lattner3d482502003-10-02 04:57:28 +0000462
Misha Brukman80731b92003-11-22 00:38:41 +0000463<p>If you run into GCC extensions which have not been included in any of these
464lists, please let us know (also including whether or not they work).</p>
Chris Lattner3d482502003-10-02 04:57:28 +0000465
Misha Brukman80731b92003-11-22 00:38:41 +0000466</div>
Chris Lattner3d482502003-10-02 04:57:28 +0000467
Misha Brukman80731b92003-11-22 00:38:41 +0000468<!-- ======================================================================= -->
469<div class="doc_subsection">
470 <a name="c++-fe">Known problems with the C++ front-end</a>
471</div>
Chris Lattner3d482502003-10-02 04:57:28 +0000472
Misha Brukman80731b92003-11-22 00:38:41 +0000473<div class="doc_text">
474
Chris Lattner97beb512007-05-14 06:56:09 +0000475<p>The C++ front-end is considered to be fully
Chris Lattnerb5bb5972004-12-07 08:04:13 +0000476tested and works for a number of non-trivial programs, including LLVM
Chris Lattner97beb512007-05-14 06:56:09 +0000477itself, Qt, Mozilla, etc.</p>
Misha Brukman80731b92003-11-22 00:38:41 +0000478
Misha Brukman80731b92003-11-22 00:38:41 +0000479<ul>
Duncan Sandse09506a2008-02-10 13:40:55 +0000480<li>Exception handling only works well on the X86 and PowerPC targets.
481It works well for x86-64 darwin but not x86-64 linux.</li>
Misha Brukman80731b92003-11-22 00:38:41 +0000482</ul>
Chris Lattner46ecf612003-10-07 22:14:37 +0000483
Misha Brukman80731b92003-11-22 00:38:41 +0000484</div>
485
Misha Brukman80731b92003-11-22 00:38:41 +0000486
Chris Lattnere38ac152008-02-12 06:29:45 +0000487<!-- ======================================================================= -->
488<div class="doc_subsection">
489 <a name="ada-fe">Known problems with the Ada front-end</a>
490</div>
491
492<div class="doc_text">
493The llvm-gcc 4.2 Ada compiler works fairly well, however this is not a mature
494technology and problems should be expected.
495<ul>
496<li>The Ada front-end currently only builds on x86-32. This is mainly due
497to lack of trampoline support (pointers to nested functions) on other platforms,
498however it <a href="http://llvm.org/PR2006">also fails to build on x86-64</a>
499which does support trampolines.</li>
500<li>The Ada front-end <a href="http://llvm.org/PR2007">fails to bootstrap</a>.
501Workaround: configure with --disable-bootstrap.</li>
502<li>The c380004 and <a href="http://llvm.org/PR2010">c393010</a> ACATS tests
503fail (c380004 also fails with gcc-4.2 mainline).</li>
504<li>Many gcc specific Ada tests continue to crash the compiler.</li>
505<li>The -E binder option (exception backtraces)
506<a href="http://llvm.org/PR1982">does not work</a> and will result in programs
507crashing if an exception is raised. Workaround: do not use -E.</li>
508<li>Only discrete types <a href="http://llvm.org/PR1981">are allowed to start
509or finish at a non-byte offset</a> in a record. Workaround: do not pack records
510or use representation clauses that result in a field of a non-discrete type
511starting or finishing in the middle of a byte.</li>
512<li>The lli interpreter <a href="http://llvm.org/PR2009">considers 'main'
513as generated by the Ada binder to be invalid</a>.
514Workaround: hand edit the file to use pointers for argv and envp rather than
515integers.</li>
516<li>The -fstack-check option <a href="http://llvm.org/PR2008">is ignored</a>.</li>
517</ul>
518</div>
519
520<!-- ======================================================================= -->
521<div class="doc_subsection">
522 <a name="fortran-fe">Known problems with the Fortran front-end</a>
523</div>
524
525<div class="doc_text">
526
527<ul>
528<li>The llvm-gcc 4.2 gfortran front-end supports a broad range of Fortran code, but does
529<a href="http://llvm.org/PR1971">not support EQUIVALENCE yet</a>.</li>
530</ul>
531</div>
532
533
Chris Lattnerb62a5f02005-05-15 16:01:20 +0000534
Chris Lattner3d482502003-10-02 04:57:28 +0000535<!-- *********************************************************************** -->
Misha Brukman80731b92003-11-22 00:38:41 +0000536<div class="doc_section">
537 <a name="additionalinfo">Additional Information</a>
538</div>
Chris Lattner3d482502003-10-02 04:57:28 +0000539<!-- *********************************************************************** -->
540
Misha Brukman80731b92003-11-22 00:38:41 +0000541<div class="doc_text">
542
Chris Lattnercb5596d2005-05-16 17:13:10 +0000543<p>A wide variety of additional information is available on the <a
Chris Lattnere0c1df42007-05-18 00:44:29 +0000544href="http://llvm.org">LLVM web page</a>, in particular in the <a
545href="http://llvm.org/docs/">documentation</a> section. The web page also
Reid Spencerc7f87f22007-07-09 08:04:31 +0000546contains versions of the API documentation which is up-to-date with the
547Subversion version of the source code.
Misha Brukman96158092005-03-30 19:14:24 +0000548You can access versions of these documents specific to this release by going
549into the "<tt>llvm/doc/</tt>" directory in the LLVM tree.</p>
Chris Lattner3d482502003-10-02 04:57:28 +0000550
Misha Brukman80731b92003-11-22 00:38:41 +0000551<p>If you have any questions or comments about LLVM, please feel free to contact
Chris Lattnera69595e2005-10-29 07:07:09 +0000552us via the <a href="http://llvm.org/docs/#maillist"> mailing
Chris Lattnerb84f3322003-12-12 21:22:16 +0000553lists</a>.</p>
Chris Lattner3d482502003-10-02 04:57:28 +0000554
Misha Brukman80731b92003-11-22 00:38:41 +0000555</div>
Chris Lattner3d482502003-10-02 04:57:28 +0000556
557<!-- *********************************************************************** -->
Chris Lattner3d482502003-10-02 04:57:28 +0000558
Misha Brukman80731b92003-11-22 00:38:41 +0000559<hr>
Misha Brukman68aab3b2003-11-22 01:23:39 +0000560<address>
Misha Brukman8834af92003-12-21 22:53:21 +0000561 <a href="http://jigsaw.w3.org/css-validator/check/referer"><img
Misha Brukman68aab3b2003-11-22 01:23:39 +0000562 src="http://jigsaw.w3.org/css-validator/images/vcss" alt="Valid CSS!"></a>
563 <a href="http://validator.w3.org/check/referer"><img
Chris Lattner458e79f2008-02-10 08:18:42 +0000564 src="http://www.w3.org/Icons/valid-html401" alt="Valid HTML 4.01!"></a>
Misha Brukman68aab3b2003-11-22 01:23:39 +0000565
Chris Lattnere0c1df42007-05-18 00:44:29 +0000566 <a href="http://llvm.org/">LLVM Compiler Infrastructure</a><br>
Misha Brukman80731b92003-11-22 00:38:41 +0000567 Last modified: $Date$
Misha Brukman68aab3b2003-11-22 01:23:39 +0000568</address>
Chris Lattner3d482502003-10-02 04:57:28 +0000569
Misha Brukman80731b92003-11-22 00:38:41 +0000570</body>
571</html>