blob: b0e3ba28e54ba3170be5d6151a381dd749476c24 [file] [log] [blame]
Misha Brukman500bc302003-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 Spencer6454ed32004-11-18 18:38:58 +00005 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
Misha Brukman500bc302003-11-22 00:38:41 +00006 <link rel="stylesheet" href="llvm.css" type="text/css">
Chris Lattner2b659ef2008-02-12 06:29:45 +00007 <title>LLVM 2.3 Release Notes</title>
Misha Brukman500bc302003-11-22 00:38:41 +00008</head>
9<body>
Chris Lattner79c3fe12003-10-02 04:57:28 +000010
Chris Lattner2b659ef2008-02-12 06:29:45 +000011<div class="doc_title">LLVM 2.3 Release Notes</div>
Chris Lattner79c3fe12003-10-02 04:57:28 +000012
13<ol>
Misha Brukman500bc302003-11-22 00:38:41 +000014 <li><a href="#intro">Introduction</a></li>
15 <li><a href="#whatsnew">What's New?</a></li>
Chris Lattner4b538b92004-04-30 22:17:12 +000016 <li><a href="GettingStarted.html">Installation Instructions</a></li>
Misha Brukman500bc302003-11-22 00:38:41 +000017 <li><a href="#portability">Portability and Supported Platforms</a></li>
Chris Lattner79c3fe12003-10-02 04:57:28 +000018 <li><a href="#knownproblems">Known Problems</a>
Misha Brukman500bc302003-11-22 00:38:41 +000019 <li><a href="#additionalinfo">Additional Information</a></li>
Chris Lattner79c3fe12003-10-02 04:57:28 +000020</ol>
21
Chris Lattner7911ce22004-05-23 21:07:27 +000022<div class="doc_author">
Chris Lattnerc463b272005-10-29 07:07:09 +000023 <p>Written by the <a href="http://llvm.org">LLVM Team</a><p>
Misha Brukman500bc302003-11-22 00:38:41 +000024</div>
Chris Lattner79c3fe12003-10-02 04:57:28 +000025
Chris Lattner2b659ef2008-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 Lattner052bae62008-02-06 18:00:48 +000028
Chris Lattner79c3fe12003-10-02 04:57:28 +000029<!-- *********************************************************************** -->
Misha Brukman500bc302003-11-22 00:38:41 +000030<div class="doc_section">
31 <a name="intro">Introduction</a>
32</div>
Chris Lattner79c3fe12003-10-02 04:57:28 +000033<!-- *********************************************************************** -->
34
Misha Brukman500bc302003-11-22 00:38:41 +000035<div class="doc_text">
36
37<p>This document contains the release notes for the LLVM compiler
Chris Lattner2b659ef2008-02-12 06:29:45 +000038infrastructure, release 2.3. Here we describe the status of LLVM, including
Chris Lattner57a460e2007-05-23 04:39:32 +000039major improvements from the previous release and any known problems. All LLVM
Chris Lattnercaf06342007-05-09 04:58:11 +000040releases may be downloaded from the <a href="http://llvm.org/releases/">LLVM
Chris Lattner57a460e2007-05-23 04:39:32 +000041releases web site</a>.</p>
Chris Lattner19092612003-10-02 16:38:05 +000042
Chris Lattner7506b1d2004-12-07 08:04:13 +000043<p>For more information about LLVM, including information about the latest
Chris Lattnerc463b272005-10-29 07:07:09 +000044release, please check out the <a href="http://llvm.org/">main LLVM
Chris Lattner47ad72c2003-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 Brukman500bc302003-11-22 00:38:41 +000047list</a> is a good place to send them.</p>
Chris Lattner79c3fe12003-10-02 04:57:28 +000048
Reid Spencer669ed452007-07-09 08:04:31 +000049<p>Note that if you are reading this file from a Subversion checkout or the
Chris Lattner84977642007-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 Brukman500bc302003-11-22 00:38:41 +000053
54</div>
Chris Lattner79c3fe12003-10-02 04:57:28 +000055
56<!-- *********************************************************************** -->
Misha Brukman500bc302003-11-22 00:38:41 +000057<div class="doc_section">
58 <a name="whatsnew">What's New?</a>
59</div>
Chris Lattner79c3fe12003-10-02 04:57:28 +000060<!-- *********************************************************************** -->
61
Misha Brukman500bc302003-11-22 00:38:41 +000062<div class="doc_text">
63
Chris Lattner2b659ef2008-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 Lattnera5099962003-12-06 20:22:41 +000066
Chris Lattner80453c92004-05-24 04:50:25 +000067</div>
68
Chris Lattner2b659ef2008-02-12 06:29:45 +000069<!-- Unfinished features in 2.3:
Chris Lattneracce85d2008-02-10 07:46:44 +000070 Index Set Splitting not enabled by default
71 Machine LICM
72 Machine Sinking
73 LegalizeDAGTypes
74 -->
75
Chris Lattnera5099962003-12-06 20:22:41 +000076<!--=========================================================================-->
Chris Lattner8a458762005-05-15 05:44:51 +000077<div class="doc_subsection">
Chris Lattner2b659ef2008-02-12 06:29:45 +000078<a name="deprecation">Removed features in LLVM 2.3</a>
Chris Lattnerb4c68cd2008-02-10 07:04:35 +000079</div>
80
81<div class="doc_text">
82
Chris Lattner2b659ef2008-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 Lattnerb4c68cd2008-02-10 07:04:35 +000087
88</div>
89
90<!--=========================================================================-->
91<div class="doc_subsection">
Chris Lattner2b659ef2008-02-12 06:29:45 +000092<a name="frontends">llvm-gcc 4.2 and clang</a>
Chris Lattner44c933e2006-04-18 06:18:36 +000093</div>
94
Chris Lattnerf3e5bc62007-05-14 06:56:09 +000095<div class="doc_text">
Chris Lattner60893e52007-05-18 06:33:02 +000096
Chris Lattner2b659ef2008-02-12 06:29:45 +000097<p>LLVM 2.3 fully supports llvm-gcc 4.2 front-end. </p>
Chris Lattnerf3e5bc62007-05-14 06:56:09 +000098
Chris Lattner252b83d2008-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 Lattner2b659ef2008-02-12 06:29:45 +0000105clang is not an official part of the LLVM 2.3 release. If you are interested in
Chris Lattneracce85d2008-02-10 07:46:44 +0000106this project, please see its <a href="http://clang.llvm.org/">web site</a>.</p>
Chris Lattner252b83d2008-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 Lattner2b659ef2008-02-12 06:29:45 +0000117<p>LLVM 2.3 includes several major new capabilities:</p>
Chris Lattnerf3e5bc62007-05-14 06:56:09 +0000118
119<ul>
Chris Lattner8170c102008-02-10 08:18:42 +0000120</ul>
121
Chris Lattnerf3e5bc62007-05-14 06:56:09 +0000122</div>
123
Chris Lattner84977642007-09-21 03:54:09 +0000124<!--=========================================================================-->
125<div class="doc_subsection">
Chris Lattnerf304ffc2008-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 Lattnerf304ffc2008-02-10 08:17:19 +0000134
135</ul>
136
137</div>
138
139<!--=========================================================================-->
140<div class="doc_subsection">
Chris Lattner84977642007-09-21 03:54:09 +0000141<a name="codegen">Code Generator Improvements</a>
142</div>
143
144<div class="doc_text">
145
Chris Lattneracce85d2008-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 Lattnerd4298712007-09-26 05:44:21 +0000149
Chris Lattner84977642007-09-21 03:54:09 +0000150<ul>
Chris Lattner2b659ef2008-02-12 06:29:45 +0000151<li>MemOperand in the code generator.</li>
Chris Lattneracce85d2008-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 Lattnerf304ffc2008-02-10 08:17:19 +0000163<p>In addition to a huge array of bug fixes and minor performance tweaks, the
Chris Lattner2b659ef2008-02-12 06:29:45 +0000164LLVM 2.3 optimizers support a few major enhancements:</p>
Chris Lattneracce85d2008-02-10 07:46:44 +0000165
166<ul>
167
Chris Lattner2b659ef2008-02-12 06:29:45 +0000168<li>Index set splitting on by default.</li>
Chris Lattner313d61f2008-02-09 22:58:07 +0000169
Chris Lattner84977642007-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 Lattner60893e52007-05-18 06:33:02 +0000179
Chris Lattner738bd302006-04-18 06:32:08 +0000180<div class="doc_text">
Chris Lattnerf304ffc2008-02-10 08:17:19 +0000181<p>New target-specific features include:
Chris Lattnerf3e5bc62007-05-14 06:56:09 +0000182</p>
Chris Lattner26299222006-11-18 07:51:14 +0000183
184<ul>
Chris Lattnerbfb17ab2007-05-17 21:41:31 +0000185</ul>
Chris Lattner84977642007-09-21 03:54:09 +0000186
Chris Lattnerbfb17ab2007-05-17 21:41:31 +0000187</div>
Chris Lattnerc5d658a2006-03-03 00:34:26 +0000188
Chris Lattner84977642007-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 Lattner84977642007-09-21 03:54:09 +0000199</ul>
200
201</div>
Chris Lattnerc5d658a2006-03-03 00:34:26 +0000202
Chris Lattner19092612003-10-02 16:38:05 +0000203<!-- *********************************************************************** -->
Misha Brukman500bc302003-11-22 00:38:41 +0000204<div class="doc_section">
205 <a name="portability">Portability and Supported Platforms</a>
206</div>
Chris Lattner19092612003-10-02 16:38:05 +0000207<!-- *********************************************************************** -->
208
Misha Brukman500bc302003-11-22 00:38:41 +0000209<div class="doc_text">
210
John Criswell0b5b5e92004-12-08 20:35:47 +0000211<p>LLVM is known to work on the following platforms:</p>
Chris Lattner4654bdb2004-06-01 18:22:41 +0000212
213<ul>
Chris Lattner57a460e2007-05-23 04:39:32 +0000214<li>Intel and AMD machines running Red Hat Linux, Fedora Core and FreeBSD
Reid Spencer00812e22005-05-17 02:47:27 +0000215 (and probably other unix-like systems).</li>
Chris Lattner000c73b2008-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 Lattner26299222006-11-18 07:51:14 +0000217 64-bit modes.</li>
Chris Lattner252b83d2008-02-06 18:00:06 +0000218<li>Intel and AMD machines running on Win32 using MinGW libraries (native).</li>
Chris Lattner57a460e2007-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 Criswell9321fa82005-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 Lattner4654bdb2004-06-01 18:22:41 +0000224</ul>
225
Brian Gaekeb0fd7612004-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 Lattner79c3fe12003-10-02 04:57:28 +0000231
Misha Brukman500bc302003-11-22 00:38:41 +0000232</div>
Chris Lattner79c3fe12003-10-02 04:57:28 +0000233
234<!-- *********************************************************************** -->
Misha Brukman500bc302003-11-22 00:38:41 +0000235<div class="doc_section">
236 <a name="knownproblems">Known Problems</a>
237</div>
Chris Lattner79c3fe12003-10-02 04:57:28 +0000238<!-- *********************************************************************** -->
239
Misha Brukman500bc302003-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 Lattner79c3fe12003-10-02 04:57:28 +0000243component. As new problems are discovered, they will be added to these
Chris Lattner5eccca42003-12-12 21:22:16 +0000244sections. If you run into a problem, please check the <a
Chris Lattnerc463b272005-10-29 07:07:09 +0000245href="http://llvm.org/bugs/">LLVM bug database</a> and submit a bug if
Chris Lattner5eccca42003-12-12 21:22:16 +0000246there isn't already one.</p>
Chris Lattner79c3fe12003-10-02 04:57:28 +0000247
Misha Brukman500bc302003-11-22 00:38:41 +0000248</div>
Chris Lattner79c3fe12003-10-02 04:57:28 +0000249
Chris Lattnerf5ee1702004-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 Lattner79c3fe12003-10-02 04:57:28 +0000254
Chris Lattnerf5ee1702004-03-14 02:03:02 +0000255<div class="doc_text">
256
Misha Brukman6df9e2c2004-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 Lattner2b659ef2008-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 Lattnerf5ee1702004-03-14 02:03:02 +0000263
264<ul>
Chris Lattner2b659ef2008-02-12 06:29:45 +0000265<li>The MSIL, IA64, Alpha, SPU, and MIPS backends are experimental.</li>
Chris Lattner000c73b2008-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 Lattnerf5ee1702004-03-14 02:03:02 +0000269</ul>
270
271</div>
Chris Lattner79c3fe12003-10-02 04:57:28 +0000272
Misha Brukman500bc302003-11-22 00:38:41 +0000273<!-- ======================================================================= -->
274<div class="doc_subsection">
Chris Lattner26299222006-11-18 07:51:14 +0000275 <a name="x86-be">Known problems with the X86 back-end</a>
John Criswellc0c186d2005-11-08 21:11:33 +0000276</div>
277
278<div class="doc_text">
279
280<ul>
Chris Lattner26299222006-11-18 07:51:14 +0000281<li>The X86 backend does not yet support <a href="http://llvm.org/PR879">inline
Chris Lattnercaf06342007-05-09 04:58:11 +0000282 assembly that uses the X86 floating point stack</a>.</li>
Chris Lattner725a0d82007-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 Lattnerf304ffc2008-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 Lattner26299222006-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 Geoffraye4285dc2007-05-15 09:21:28 +0000300<li>The Linux PPC32/ABI support needs testing for the interpreter and static
Chris Lattner57a460e2007-05-23 04:39:32 +0000301compilation, and lacks support for debug information.</li>
Chris Lattner26299222006-11-18 07:51:14 +0000302</ul>
303
304</div>
305
306<!-- ======================================================================= -->
307<div class="doc_subsection">
Chris Lattnerf3e5bc62007-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 Lattner57a460e2007-05-23 04:39:32 +0000314<li>Thumb mode works only on ARMv6 or higher processors. On sub-ARMv6
Duncan Sandsc90d68b2007-09-26 15:59:54 +0000315processors, thumb programs can crash or produce wrong
Chris Lattner57a460e2007-05-23 04:39:32 +0000316results (<a href="http://llvm.org/PR1388">PR1388</a>).</li>
Chris Lattnerf3e5bc62007-05-14 06:56:09 +0000317<li>Compilation for ARM Linux OABI (old ABI) is supported, but not fully tested.
318</li>
Chris Lattnerf304ffc2008-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 Lattner57a460e2007-05-23 04:39:32 +0000320programs compiled with LLVM. Please use more recent versions of QEMU.</li>
Chris Lattnerf3e5bc62007-05-14 06:56:09 +0000321</ul>
322
323</div>
324
325<!-- ======================================================================= -->
326<div class="doc_subsection">
Chris Lattner26299222006-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 Lattner26299222006-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 Criswellc0c186d2005-11-08 21:11:33 +0000351</ul>
352</div>
353
Chris Lattner26299222006-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 Lattnercaf06342007-05-09 04:58:11 +0000380<li>The Itanium backend has bitrotted somewhat.</li>
Chris Lattner26299222006-11-18 07:51:14 +0000381</ul>
382
383</div>
384
385<!-- ======================================================================= -->
386<div class="doc_subsection">
Chris Lattnerf3e5bc62007-05-14 06:56:09 +0000387 <a name="c-be">Known problems with the C back-end</a>
Chris Lattner26299222006-11-18 07:51:14 +0000388</div>
389
390<div class="doc_text">
391
392<ul>
Chris Lattnerf3e5bc62007-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 Lattner725a0d82007-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 Lattner725a0d82007-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 Sandsf74c0cc2008-02-10 13:40:55 +0000400<li>The C backend does not support all exception handling constructs.</li>
Chris Lattner26299222006-11-18 07:51:14 +0000401</ul>
402
403</div>
John Criswellc0c186d2005-11-08 21:11:33 +0000404
Misha Brukman500bc302003-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 Lattner47588f92003-10-02 05:07:23 +0000410
Chris Lattner79c3fe12003-10-02 04:57:28 +0000411<!-- _______________________________________________________________________ -->
Chris Lattnerb40efb32003-12-14 05:03:43 +0000412<div class="doc_subsubsection">Bugs</div>
Chris Lattner79c3fe12003-10-02 04:57:28 +0000413
Misha Brukman500bc302003-11-22 00:38:41 +0000414<div class="doc_text">
Chris Lattnerc5d658a2006-03-03 00:34:26 +0000415
Chris Lattner252b83d2008-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 Lattnerf3e5bc62007-05-14 06:56:09 +0000418llvmdev mailing list if you are interested.</p>
Chris Lattnerd9ea0172006-08-08 17:27:28 +0000419
Misha Brukman500bc302003-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 Brukman500bc302003-11-22 00:38:41 +0000428<ul>
429
Chris Lattnerd09c4ec2007-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 Lattner79c3fe12003-10-02 04:57:28 +0000433
Duncan Sands32a83442007-05-18 09:04:20 +0000434<li><p>llvm-gcc <b>partially</b> supports these GCC extensions:</p>
Chris Lattner79c3fe12003-10-02 04:57:28 +0000435 <ol>
Duncan Sandsc90d68b2007-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 Sandsf74c0cc2008-02-10 13:40:55 +0000440 taking the address of a nested function (except on X86 targets)
Duncan Sandsc90d68b2007-09-26 15:59:54 +0000441 or non-local gotos.</li>
Chris Lattner79c3fe12003-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 Brukman500bc302003-11-22 00:38:41 +0000444
John Criswelld000e1d2003-12-18 16:43:17 +0000445 Declaring that functions have no side effects or that they can never
Misha Brukman500bc302003-11-22 00:38:41 +0000446 return.<br>
447
Anton Korobeynikovbe6fe282007-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 Korobeynikov9413de32006-11-18 08:04:48 +0000450 <tt>deprecated</tt>, <tt>fastcall</tt>, <tt>format</tt>,
Anton Korobeynikovbe6fe282007-11-16 11:12:01 +0000451 <tt>format_arg</tt>, <tt>non_null</tt>, <tt>noinline</tt>,
Chris Lattnerf304ffc2008-02-10 08:17:19 +0000452 <tt>noreturn</tt>, <tt>nothrow</tt>, <tt>pure</tt>, <tt>regparm</tt>
Anton Korobeynikov8cea37b2007-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 Brukman500bc302003-11-22 00:38:41 +0000455
Chris Lattnerf304ffc2008-02-10 08:17:19 +0000456 <b>Ignored:</b> <tt>malloc</tt>,
Anton Korobeynikovbe6fe282007-11-16 11:12:01 +0000457 <tt>no_instrument_function</tt></li>
Misha Brukman500bc302003-11-22 00:38:41 +0000458 </ol>
Chris Lattnerd09c4ec2007-05-17 22:02:24 +0000459</li>
Chris Lattner79c3fe12003-10-02 04:57:28 +0000460
Misha Brukmane0c891c2003-11-22 01:00:11 +0000461</ul>
Chris Lattner79c3fe12003-10-02 04:57:28 +0000462
Misha Brukman500bc302003-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 Lattner79c3fe12003-10-02 04:57:28 +0000465
Misha Brukman500bc302003-11-22 00:38:41 +0000466</div>
Chris Lattner79c3fe12003-10-02 04:57:28 +0000467
Misha Brukman500bc302003-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 Lattner79c3fe12003-10-02 04:57:28 +0000472
Misha Brukman500bc302003-11-22 00:38:41 +0000473<div class="doc_text">
474
Chris Lattnerf3e5bc62007-05-14 06:56:09 +0000475<p>The C++ front-end is considered to be fully
Chris Lattner7506b1d2004-12-07 08:04:13 +0000476tested and works for a number of non-trivial programs, including LLVM
Chris Lattnerf3e5bc62007-05-14 06:56:09 +0000477itself, Qt, Mozilla, etc.</p>
Misha Brukman500bc302003-11-22 00:38:41 +0000478
Misha Brukman500bc302003-11-22 00:38:41 +0000479<ul>
Duncan Sandsf74c0cc2008-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 Brukman500bc302003-11-22 00:38:41 +0000482</ul>
Chris Lattnerfcc54b32003-10-07 22:14:37 +0000483
Misha Brukman500bc302003-11-22 00:38:41 +0000484</div>
485
Misha Brukman500bc302003-11-22 00:38:41 +0000486
Chris Lattner2b659ef2008-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 Lattner98a493c2005-05-15 16:01:20 +0000534
Chris Lattner79c3fe12003-10-02 04:57:28 +0000535<!-- *********************************************************************** -->
Misha Brukman500bc302003-11-22 00:38:41 +0000536<div class="doc_section">
537 <a name="additionalinfo">Additional Information</a>
538</div>
Chris Lattner79c3fe12003-10-02 04:57:28 +0000539<!-- *********************************************************************** -->
540
Misha Brukman500bc302003-11-22 00:38:41 +0000541<div class="doc_text">
542
Chris Lattner416db102005-05-16 17:13:10 +0000543<p>A wide variety of additional information is available on the <a
Chris Lattnerb4b0ce72007-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 Spencer669ed452007-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 Brukman109d9e82005-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 Lattner79c3fe12003-10-02 04:57:28 +0000550
Misha Brukman500bc302003-11-22 00:38:41 +0000551<p>If you have any questions or comments about LLVM, please feel free to contact
Chris Lattnerc463b272005-10-29 07:07:09 +0000552us via the <a href="http://llvm.org/docs/#maillist"> mailing
Chris Lattner5eccca42003-12-12 21:22:16 +0000553lists</a>.</p>
Chris Lattner79c3fe12003-10-02 04:57:28 +0000554
Misha Brukman500bc302003-11-22 00:38:41 +0000555</div>
Chris Lattner79c3fe12003-10-02 04:57:28 +0000556
557<!-- *********************************************************************** -->
Chris Lattner79c3fe12003-10-02 04:57:28 +0000558
Misha Brukman500bc302003-11-22 00:38:41 +0000559<hr>
Misha Brukman2061e892003-11-22 01:23:39 +0000560<address>
Misha Brukman38847d52003-12-21 22:53:21 +0000561 <a href="http://jigsaw.w3.org/css-validator/check/referer"><img
Misha Brukman2061e892003-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 Lattner8170c102008-02-10 08:18:42 +0000564 src="http://www.w3.org/Icons/valid-html401" alt="Valid HTML 4.01!"></a>
Misha Brukman2061e892003-11-22 01:23:39 +0000565
Chris Lattnerb4b0ce72007-05-18 00:44:29 +0000566 <a href="http://llvm.org/">LLVM Compiler Infrastructure</a><br>
Misha Brukman500bc302003-11-22 00:38:41 +0000567 Last modified: $Date$
Misha Brukman2061e892003-11-22 01:23:39 +0000568</address>
Chris Lattner79c3fe12003-10-02 04:57:28 +0000569
Misha Brukman500bc302003-11-22 00:38:41 +0000570</body>
571</html>