| Duncan Sands | e2e4a89 | 2009-06-24 08:38:48 +0000 | [diff] [blame^] | 1 | <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" | 
 | 2 |                       "http://www.w3.org/TR/html4/strict.dtd"> | 
 | 3 | <html> | 
 | 4 | <head> | 
 | 5 |   <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> | 
 | 6 |   <link rel="stylesheet" href="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 | 
 | 37 | Infrastructure, release 2.6.  Here we describe the status of LLVM, including | 
 | 38 | major improvements from the previous release and significant known problems. | 
 | 39 | All LLVM releases may be downloaded from the <a | 
 | 40 | href="http://llvm.org/releases/">LLVM releases web site</a>.</p> | 
 | 41 |  | 
 | 42 | <p>For more information about LLVM, including information about the latest | 
 | 43 | release, please check out the <a href="http://llvm.org/">main LLVM | 
 | 44 | web site</a>.  If you have questions or comments, the <a | 
 | 45 | href="http://mail.cs.uiuc.edu/mailman/listinfo/llvmdev">LLVM Developer's Mailing | 
 | 46 | List</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 | 
 | 49 | main LLVM web page, this document applies to the <i>next</i> release, not the | 
 | 50 | current 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> | 
 | 54 |  | 
 | 55 | <!-- Unfinished features in 2.5: | 
 | 56 |   Machine LICM | 
 | 57 |   Machine Sinking | 
 | 58 |   target-specific intrinsics | 
 | 59 |   gold lto plugin | 
 | 60 |   pre-alloc splitter, strong phi elim | 
 | 61 |   <tt>llc -enable-value-prop</tt>, propagation of value info | 
 | 62 |        (sign/zero ext info) from one MBB to another | 
 | 63 |   debug info for optimized code | 
 | 64 |   interpreter + libffi | 
 | 65 |   postalloc scheduler: anti dependence breaking, hazard recognizer? | 
 | 66 |  | 
 | 67 | initial support for debug line numbers when optimization enabled, not useful in | 
 | 68 |   2.5 but will be for 2.6. | 
 | 69 |  | 
 | 70 |  --> | 
 | 71 |  | 
 | 72 |  <!-- for announcement email: | 
 | 73 |    --> | 
 | 74 |  | 
 | 75 | <!-- *********************************************************************** --> | 
 | 76 | <div class="doc_section"> | 
 | 77 |   <a name="subproj">Sub-project Status Update</a> | 
 | 78 | </div> | 
 | 79 | <!-- *********************************************************************** --> | 
 | 80 |  | 
 | 81 | <div class="doc_text"> | 
 | 82 | <p> | 
 | 83 | The LLVM 2.6 distribution currently consists of code from the core LLVM | 
 | 84 | repository —which roughly includes the LLVM optimizers, code generators | 
 | 85 | and supporting tools — and the llvm-gcc repository.  In addition to this | 
 | 86 | code, the LLVM Project includes other sub-projects that are in development.  The | 
 | 87 | two which are the most actively developed are the <a href="#clang">Clang | 
 | 88 | Project</a> and the <a href="#vmkit">VMKit Project</a>. | 
 | 89 | </p> | 
 | 90 |  | 
 | 91 | </div> | 
 | 92 |  | 
 | 93 |  | 
 | 94 | <!--=========================================================================--> | 
 | 95 | <div class="doc_subsection"> | 
 | 96 | <a name="clang">Clang: C/C++/Objective-C Frontend Toolkit</a> | 
 | 97 | </div> | 
 | 98 |  | 
 | 99 | <div class="doc_text"> | 
 | 100 |  | 
 | 101 | <p>The <a href="http://clang.llvm.org/">Clang project</a> is an effort to build | 
 | 102 | a set of new 'LLVM native' front-end technologies for the LLVM optimizer and | 
 | 103 | code generator.  While Clang is not included in the LLVM 2.6 release, it is | 
 | 104 | continuing to make major strides forward in all areas.  Its C and Objective-C | 
 | 105 | parsing and code generation support is now very solid.  For example, it is | 
 | 106 | capable of successfully building many real-world applications for X86-32 | 
 | 107 | and X86-64, | 
 | 108 | including the <a href="http://wiki.freebsd.org/BuildingFreeBSDWithClang">FreeBSD | 
 | 109 | kernel</a> and <a href="http://gcc.gnu.org/gcc-4.2/">gcc 4.2</a>.  C++ is also | 
 | 110 | making <a href="http://clang.llvm.org/cxx_status.html">incredible progress</a>, | 
 | 111 | and work on templates has recently started.  If you are | 
 | 112 | interested in fast compiles and good diagnostics, we encourage you to try it out | 
 | 113 | by <a href="http://clang.llvm.org/get_started.html">building from mainline</a> | 
 | 114 | and reporting any issues you hit to the <a | 
 | 115 | href="http://lists.cs.uiuc.edu/mailman/listinfo/cfe-dev">Clang front-end mailing | 
 | 116 | list</a>.</p> | 
 | 117 |  | 
 | 118 | <p>In the LLVM 2.6 time-frame, the Clang team has made many improvements:</p> | 
 | 119 |  | 
 | 120 | <ul> | 
 | 121 | <li>Something wonderful!</li> | 
 | 122 | <li>Many many bugs are fixed and many features have been added.</li> | 
 | 123 | </ul> | 
 | 124 | </div> | 
 | 125 |  | 
 | 126 | <!--=========================================================================--> | 
 | 127 | <div class="doc_subsection"> | 
 | 128 | <a name="clangsa">Clang Static Analyzer</a> | 
 | 129 | </div> | 
 | 130 |  | 
 | 131 | <div class="doc_text"> | 
 | 132 |  | 
 | 133 | <p>Previously announced in the 2.4 LLVM release, the Clang project also | 
 | 134 | includes an early stage static source code analysis tool for <a | 
 | 135 | href="http://clang.llvm.org/StaticAnalysis.html">automatically finding bugs</a> | 
 | 136 | in C and Objective-C programs. The tool performs a growing set of checks to find | 
 | 137 | bugs that occur on a specific path within a program.</p> | 
 | 138 |  | 
 | 139 | <p>In the LLVM 2.6 time-frame there have been many significant improvements to | 
 | 140 | XYZ.</p> | 
 | 141 |  | 
 | 142 | <p>The set of checks performed by the static analyzer continues to expand, and | 
 | 143 | future plans for the tool include full source-level inter-procedural analysis | 
 | 144 | and deeper checks such as buffer overrun detection. There are many opportunities | 
 | 145 | to extend and enhance the static analyzer, and anyone interested in working on | 
 | 146 | this project is encouraged to get involved!</p> | 
 | 147 |  | 
 | 148 | </div> | 
 | 149 |  | 
 | 150 | <!--=========================================================================--> | 
 | 151 | <div class="doc_subsection"> | 
 | 152 | <a name="vmkit">VMKit: JVM/CLI Virtual Machine Implementation</a> | 
 | 153 | </div> | 
 | 154 |  | 
 | 155 | <div class="doc_text"> | 
 | 156 | <p> | 
 | 157 | The <a href="http://vmkit.llvm.org/">VMKit project</a> is an implementation of | 
 | 158 | a JVM and a CLI Virtual Machines (Microsoft .NET is an | 
 | 159 | implementation of the CLI) using the Just-In-Time compiler of LLVM.</p> | 
 | 160 |  | 
 | 161 | <p>Following LLVM 2.6, VMKit has its XYZ release that you can find on its | 
 | 162 | <a href="http://vmkit.llvm.org/releases/">webpage</a>. The release includes | 
 | 163 | bug fixes, cleanup and new features. The major changes are:</p> | 
 | 164 |  | 
 | 165 | <ul> | 
 | 166 |  | 
 | 167 | <li>Something wonderful!</li> | 
 | 168 |  | 
 | 169 | </ul> | 
 | 170 | </div> | 
 | 171 |  | 
 | 172 | <!-- *********************************************************************** --> | 
 | 173 | <div class="doc_section"> | 
 | 174 |   <a name="externalproj">External Projects Using LLVM 2.6</a> | 
 | 175 | </div> | 
 | 176 | <!-- *********************************************************************** --> | 
 | 177 |  | 
 | 178 | <!--=========================================================================--> | 
 | 179 | <div class="doc_subsection"> | 
 | 180 | <a name="pure">Pure</a> | 
 | 181 | </div> | 
 | 182 |  | 
 | 183 | <div class="doc_text"> | 
 | 184 | <p> | 
 | 185 | <a href="http://pure-lang.googlecode.com/">Pure</a> | 
 | 186 | is an algebraic/functional programming language based on term rewriting. | 
 | 187 | Programs are collections of equations which are used to evaluate expressions in | 
 | 188 | a symbolic fashion. Pure offers dynamic typing, eager and lazy evaluation, | 
 | 189 | lexical closures, a hygienic macro system (also based on term rewriting), | 
 | 190 | built-in list and matrix support (including list and matrix comprehensions) and | 
 | 191 | an easy-to-use C interface. The interpreter uses LLVM as a backend to | 
 | 192 |  JIT-compile Pure programs to fast native code.</p> | 
 | 193 |  | 
 | 194 | <p>In addition to the usual algebraic data structures, Pure also has | 
 | 195 | MATLAB-style matrices in order to support numeric computations and signal | 
 | 196 | processing in an efficient way. Pure is mainly aimed at mathematical | 
 | 197 | applications right now, but it has been designed as a general purpose language. | 
 | 198 | The dynamic interpreter environment and the C interface make it possible to use | 
 | 199 | it as a kind of functional scripting language for many application areas. | 
 | 200 | </p> | 
 | 201 | </div> | 
 | 202 |  | 
 | 203 |  | 
 | 204 | <!--=========================================================================--> | 
 | 205 | <div class="doc_subsection"> | 
 | 206 | <a name="ldc">LLVM D Compiler</a> | 
 | 207 | </div> | 
 | 208 |  | 
 | 209 | <div class="doc_text"> | 
 | 210 | <p> | 
 | 211 | <a href="http://www.dsource.org/projects/ldc">LDC</a> is an implementation of | 
 | 212 | the D Programming Language using the LLVM optimizer and code generator. | 
 | 213 | The LDC project works great with the LLVM 2.6 release.  General improvements in | 
 | 214 | this | 
 | 215 | cycle have included new inline asm constraint handling, better debug info | 
 | 216 | support, general bugfixes, and better x86-64 support.  This has allowed | 
 | 217 | some major improvements in LDC, getting us much closer to being as | 
 | 218 | fully featured as the original DMD compiler from DigitalMars. | 
 | 219 | </p> | 
 | 220 | </div> | 
 | 221 |  | 
 | 222 | <!--=========================================================================--> | 
 | 223 | <div class="doc_subsection"> | 
 | 224 | <a name="RoadsendPHP">Roadsend PHP</a> | 
 | 225 | </div> | 
 | 226 |  | 
 | 227 | <div class="doc_text"> | 
 | 228 | <p><a href="http://code.roadsend.com/rphp">Roadsend PHP</a> (rphp) is an open | 
 | 229 | source implementation of the PHP programming  | 
 | 230 | language that uses LLVM for its optimizer, JIT, and static compiler. This is a  | 
 | 231 | reimplementation of an earlier project that is now based on LLVM.</p> | 
 | 232 | </div> | 
 | 233 |  | 
 | 234 |  | 
 | 235 | <!-- *********************************************************************** --> | 
 | 236 | <div class="doc_section"> | 
 | 237 |   <a name="whatsnew">What's New in LLVM 2.6?</a> | 
 | 238 | </div> | 
 | 239 | <!-- *********************************************************************** --> | 
 | 240 |  | 
 | 241 | <div class="doc_text"> | 
 | 242 |  | 
 | 243 | <p>This release includes a huge number of bug fixes, performance tweaks, and | 
 | 244 | minor improvements.  Some of the major improvements and new features are listed | 
 | 245 | in this section. | 
 | 246 | </p> | 
 | 247 | </div> | 
 | 248 |  | 
 | 249 | <!--=========================================================================--> | 
 | 250 | <div class="doc_subsection"> | 
 | 251 | <a name="majorfeatures">Major New Features</a> | 
 | 252 | </div> | 
 | 253 |  | 
 | 254 | <div class="doc_text"> | 
 | 255 |  | 
 | 256 | <p>LLVM 2.6 includes several major new capabilities:</p> | 
 | 257 |  | 
 | 258 | <ul> | 
 | 259 | <li>Something wonderful!</li> | 
 | 260 | </ul> | 
 | 261 |  | 
 | 262 | </div> | 
 | 263 |  | 
 | 264 |  | 
 | 265 | <!--=========================================================================--> | 
 | 266 | <div class="doc_subsection"> | 
 | 267 | <a name="llvm-gcc">llvm-gcc 4.2 Improvements</a> | 
 | 268 | </div> | 
 | 269 |  | 
 | 270 | <div class="doc_text"> | 
 | 271 |  | 
 | 272 | <p>LLVM fully supports the llvm-gcc 4.2 front-end, which marries the GCC | 
 | 273 | front-ends and driver with the LLVM optimizer and code generator.  It currently | 
 | 274 | includes support for the C, C++, Objective-C, Ada, and Fortran front-ends.</p> | 
 | 275 |  | 
 | 276 | <ul> | 
 | 277 | <li>Something wonderful!</li> | 
 | 278 | </ul> | 
 | 279 |  | 
 | 280 | </div> | 
 | 281 |  | 
 | 282 |  | 
 | 283 | <!--=========================================================================--> | 
 | 284 | <div class="doc_subsection"> | 
 | 285 | <a name="coreimprovements">LLVM IR and Core Improvements</a> | 
 | 286 | </div> | 
 | 287 |  | 
 | 288 | <div class="doc_text"> | 
 | 289 | <p>LLVM IR has several new features that are used by our existing front-ends and | 
 | 290 | can be useful if you are writing a front-end for LLVM:</p> | 
 | 291 |  | 
 | 292 | <ul> | 
 | 293 | <li>Something wonderful!</li> | 
 | 294 | </ul> | 
 | 295 |  | 
 | 296 | </div> | 
 | 297 |  | 
 | 298 | <!--=========================================================================--> | 
 | 299 | <div class="doc_subsection"> | 
 | 300 | <a name="optimizer">Optimizer Improvements</a> | 
 | 301 | </div> | 
 | 302 |  | 
 | 303 | <div class="doc_text"> | 
 | 304 |  | 
 | 305 | <p>In addition to a large array of bug fixes and minor performance tweaks, this | 
 | 306 | release includes a few major enhancements and additions to the optimizers:</p> | 
 | 307 |  | 
 | 308 | <ul> | 
 | 309 |  | 
 | 310 | <li>Something wonderful!</li> | 
 | 311 |  | 
 | 312 | </ul> | 
 | 313 |  | 
 | 314 | </div> | 
 | 315 |  | 
 | 316 | <!--=========================================================================--> | 
 | 317 | <div class="doc_subsection"> | 
 | 318 | <a name="codegen">Target Independent Code Generator Improvements</a> | 
 | 319 | </div> | 
 | 320 |  | 
 | 321 | <div class="doc_text"> | 
 | 322 |  | 
 | 323 | <p>We have put a significant amount of work into the code generator | 
 | 324 | infrastructure, which allows us to implement more aggressive algorithms and make | 
 | 325 | it run faster:</p> | 
 | 326 |  | 
 | 327 | <ul> | 
 | 328 |  | 
 | 329 | <li>Something wonderful!</li> | 
 | 330 | </ul> | 
 | 331 | </div> | 
 | 332 |  | 
 | 333 | <!--=========================================================================--> | 
 | 334 | <div class="doc_subsection"> | 
 | 335 | <a name="x86">X86-32 and X86-64 Target Improvements</a> | 
 | 336 | </div> | 
 | 337 |  | 
 | 338 | <div class="doc_text"> | 
 | 339 | <p>New features of the X86 target include: | 
 | 340 | </p> | 
 | 341 |  | 
 | 342 | <ul> | 
 | 343 |  | 
 | 344 | <li>Something wonderful!</li> | 
 | 345 | </ul> | 
 | 346 |  | 
 | 347 | </div> | 
 | 348 |  | 
 | 349 | <!--=========================================================================--> | 
 | 350 | <div class="doc_subsection"> | 
 | 351 | <a name="pic16">PIC16 Target Improvements</a> | 
 | 352 | </div> | 
 | 353 |  | 
 | 354 | <div class="doc_text"> | 
 | 355 | <p>New features of the PIC16 target include: | 
 | 356 | </p> | 
 | 357 |  | 
 | 358 | <ul> | 
 | 359 | <li>Something wonderful!</li> | 
 | 360 | </ul> | 
 | 361 |  | 
 | 362 | <p>Things not yet supported:</p> | 
 | 363 |  | 
 | 364 | <ul> | 
 | 365 | <li>Floating point.</li> | 
 | 366 | <li>Passing/returning aggregate types to and from functions.</li> | 
 | 367 | <li>Variable arguments.</li> | 
 | 368 | <li>Indirect function calls.</li> | 
 | 369 | <li>Interrupts/programs.</li> | 
 | 370 | <li>Debug info.</li> | 
 | 371 | </ul> | 
 | 372 |  | 
 | 373 | </div> | 
 | 374 |  | 
 | 375 |  | 
 | 376 | <!--=========================================================================--> | 
 | 377 | <div class="doc_subsection"> | 
 | 378 | <a name="llvmc">Improvements in LLVMC</a> | 
 | 379 | </div> | 
 | 380 |  | 
 | 381 | <div class="doc_text"> | 
 | 382 | <p>New features include:</p> | 
 | 383 |  | 
 | 384 | <ul> | 
 | 385 | <li>Something wonderful!</li> | 
 | 386 | </ul> | 
 | 387 |  | 
 | 388 | </div> | 
 | 389 |  | 
 | 390 |  | 
 | 391 | <!--=========================================================================--> | 
 | 392 | <div class="doc_subsection"> | 
 | 393 | <a name="changes">Major Changes and Removed Features</a> | 
 | 394 | </div> | 
 | 395 |  | 
 | 396 | <div class="doc_text"> | 
 | 397 |  | 
 | 398 | <p>If you're already an LLVM user or developer with out-of-tree changes based | 
 | 399 | on LLVM 2.4, this section lists some "gotchas" that you may run into upgrading | 
 | 400 | from the previous release.</p> | 
 | 401 |  | 
 | 402 | <ul> | 
 | 403 |  | 
 | 404 | <li>Something horrible!</li> | 
 | 405 |  | 
 | 406 | </ul> | 
 | 407 |  | 
 | 408 |  | 
 | 409 | <p>In addition, many APIs have changed in this release.  Some of the major LLVM | 
 | 410 | API changes are:</p> | 
 | 411 |  | 
 | 412 | <ul> | 
 | 413 | <li>The <tt>getABITypeSize</tt> methods are now called <tt>getAllocSize</tt>.</li> | 
 | 414 | </ul> | 
 | 415 |  | 
 | 416 | </div> | 
 | 417 |  | 
 | 418 |  | 
 | 419 |  | 
 | 420 | <!-- *********************************************************************** --> | 
 | 421 | <div class="doc_section"> | 
 | 422 |   <a name="portability">Portability and Supported Platforms</a> | 
 | 423 | </div> | 
 | 424 | <!-- *********************************************************************** --> | 
 | 425 |  | 
 | 426 | <div class="doc_text"> | 
 | 427 |  | 
 | 428 | <p>LLVM is known to work on the following platforms:</p> | 
 | 429 |  | 
 | 430 | <ul> | 
 | 431 | <li>Intel and AMD machines (IA32, X86-64, AMD64, EMT-64) running Red Hat | 
 | 432 | Linux, Fedora Core and FreeBSD (and probably other unix-like systems).</li> | 
 | 433 | <li>PowerPC and X86-based Mac OS X systems, running 10.3 and above in 32-bit | 
 | 434 | and 64-bit modes.</li> | 
 | 435 | <li>Intel and AMD machines running on Win32 using MinGW libraries (native).</li> | 
 | 436 | <li>Intel and AMD machines running on Win32 with the Cygwin libraries (limited | 
 | 437 |     support is available for native builds with Visual C++).</li> | 
 | 438 | <li>Sun UltraSPARC workstations running Solaris 10.</li> | 
 | 439 | <li>Alpha-based machines running Debian GNU/Linux.</li> | 
 | 440 | <li>Itanium-based (IA64) machines running Linux and HP-UX.</li> | 
 | 441 | </ul> | 
 | 442 |  | 
 | 443 | <p>The core LLVM infrastructure uses GNU autoconf to adapt itself | 
 | 444 | to the machine and operating system on which it is built.  However, minor | 
 | 445 | porting may be required to get LLVM to work on new platforms.  We welcome your | 
 | 446 | portability patches and reports of successful builds or error messages.</p> | 
 | 447 |  | 
 | 448 | </div> | 
 | 449 |  | 
 | 450 | <!-- *********************************************************************** --> | 
 | 451 | <div class="doc_section"> | 
 | 452 |   <a name="knownproblems">Known Problems</a> | 
 | 453 | </div> | 
 | 454 | <!-- *********************************************************************** --> | 
 | 455 |  | 
 | 456 | <div class="doc_text"> | 
 | 457 |  | 
 | 458 | <p>This section contains significant known problems with the LLVM system, | 
 | 459 | listed by component.  If you run into a problem, please check the <a | 
 | 460 | href="http://llvm.org/bugs/">LLVM bug database</a> and submit a bug if | 
 | 461 | there isn't already one.</p> | 
 | 462 |  | 
 | 463 | </div> | 
 | 464 |  | 
 | 465 | <!-- ======================================================================= --> | 
 | 466 | <div class="doc_subsection"> | 
 | 467 |   <a name="experimental">Experimental features included with this release</a> | 
 | 468 | </div> | 
 | 469 |  | 
 | 470 | <div class="doc_text"> | 
 | 471 |  | 
 | 472 | <p>The following components of this LLVM release are either untested, known to | 
 | 473 | be broken or unreliable, or are in early development.  These components should | 
 | 474 | not be relied on, and bugs should not be filed against them, but they may be | 
 | 475 | useful to some people.  In particular, if you would like to work on one of these | 
 | 476 | components, please contact us on the <a | 
 | 477 | href="http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev">LLVMdev list</a>.</p> | 
 | 478 |  | 
 | 479 | <ul> | 
 | 480 | <li>The MSIL, IA64, Alpha, SPU, MIPS, and PIC16 backends are experimental.</li> | 
 | 481 | <li>The <tt>llc</tt> "<tt>-filetype=asm</tt>" (the default) is the only | 
 | 482 |     supported value for this option.</li> | 
 | 483 | </ul> | 
 | 484 |  | 
 | 485 | </div> | 
 | 486 |  | 
 | 487 | <!-- ======================================================================= --> | 
 | 488 | <div class="doc_subsection"> | 
 | 489 |   <a name="x86-be">Known problems with the X86 back-end</a> | 
 | 490 | </div> | 
 | 491 |  | 
 | 492 | <div class="doc_text"> | 
 | 493 |  | 
 | 494 | <ul> | 
 | 495 |   <li>The X86 backend does not yet support | 
 | 496 |     all <a href="http://llvm.org/PR879">inline assembly that uses the X86 | 
 | 497 |     floating point stack</a>.  It supports the 'f' and 't' constraints, but not | 
 | 498 |     'u'.</li> | 
 | 499 |   <li>The X86 backend generates inefficient floating point code when configured | 
 | 500 |     to generate code for systems that don't have SSE2.</li> | 
 | 501 |   <li>Win64 code generation wasn't widely tested. Everything should work, but we | 
 | 502 |     expect small issues to happen. Also, llvm-gcc cannot build the mingw64 | 
 | 503 |     runtime currently due | 
 | 504 |     to <a href="http://llvm.org/PR2255">several</a> | 
 | 505 |     <a href="http://llvm.org/PR2257">bugs</a> and due to lack of support for | 
 | 506 |     the | 
 | 507 |     'u' inline assembly constraint and for X87 floating point inline assembly.</li> | 
 | 508 |   <li>The X86-64 backend does not yet support the LLVM IR instruction | 
 | 509 |       <tt>va_arg</tt>. Currently, the llvm-gcc and front-ends support variadic | 
 | 510 |       argument constructs on X86-64 by lowering them manually.</li> | 
 | 511 | </ul> | 
 | 512 |  | 
 | 513 | </div> | 
 | 514 |  | 
 | 515 | <!-- ======================================================================= --> | 
 | 516 | <div class="doc_subsection"> | 
 | 517 |   <a name="ppc-be">Known problems with the PowerPC back-end</a> | 
 | 518 | </div> | 
 | 519 |  | 
 | 520 | <div class="doc_text"> | 
 | 521 |  | 
 | 522 | <ul> | 
 | 523 | <li>The Linux PPC32/ABI support needs testing for the interpreter and static | 
 | 524 | compilation, and lacks support for debug information.</li> | 
 | 525 | </ul> | 
 | 526 |  | 
 | 527 | </div> | 
 | 528 |  | 
 | 529 | <!-- ======================================================================= --> | 
 | 530 | <div class="doc_subsection"> | 
 | 531 |   <a name="arm-be">Known problems with the ARM back-end</a> | 
 | 532 | </div> | 
 | 533 |  | 
 | 534 | <div class="doc_text"> | 
 | 535 |  | 
 | 536 | <ul> | 
 | 537 | <li>Thumb mode works only on ARMv6 or higher processors. On sub-ARMv6 | 
 | 538 | processors, thumb programs can crash or produce wrong | 
 | 539 | results (<a href="http://llvm.org/PR1388">PR1388</a>).</li> | 
 | 540 | <li>Compilation for ARM Linux OABI (old ABI) is supported but not fully tested. | 
 | 541 | </li> | 
 | 542 | <li>There is a bug in QEMU-ARM (<= 0.9.0) which causes it to incorrectly | 
 | 543 |  execute | 
 | 544 | programs compiled with LLVM.  Please use more recent versions of QEMU.</li> | 
 | 545 | </ul> | 
 | 546 |  | 
 | 547 | </div> | 
 | 548 |  | 
 | 549 | <!-- ======================================================================= --> | 
 | 550 | <div class="doc_subsection"> | 
 | 551 |   <a name="sparc-be">Known problems with the SPARC back-end</a> | 
 | 552 | </div> | 
 | 553 |  | 
 | 554 | <div class="doc_text"> | 
 | 555 |  | 
 | 556 | <ul> | 
 | 557 | <li>The SPARC backend only supports the 32-bit SPARC ABI (-m32); it does not | 
 | 558 |     support the 64-bit SPARC ABI (-m64).</li> | 
 | 559 | </ul> | 
 | 560 |  | 
 | 561 | </div> | 
 | 562 |  | 
 | 563 | <!-- ======================================================================= --> | 
 | 564 | <div class="doc_subsection"> | 
 | 565 |   <a name="mips-be">Known problems with the MIPS back-end</a> | 
 | 566 | </div> | 
 | 567 |  | 
 | 568 | <div class="doc_text"> | 
 | 569 |  | 
 | 570 | <ul> | 
 | 571 | <li>The O32 ABI is not fully supported.</li> | 
 | 572 | <li>64-bit MIPS targets are not supported yet.</li> | 
 | 573 | </ul> | 
 | 574 |  | 
 | 575 | </div> | 
 | 576 |  | 
 | 577 | <!-- ======================================================================= --> | 
 | 578 | <div class="doc_subsection"> | 
 | 579 |   <a name="alpha-be">Known problems with the Alpha back-end</a> | 
 | 580 | </div> | 
 | 581 |  | 
 | 582 | <div class="doc_text"> | 
 | 583 |  | 
 | 584 | <ul> | 
 | 585 |  | 
 | 586 | <li>On 21164s, some rare FP arithmetic sequences which may trap do not have the | 
 | 587 | appropriate nops inserted to ensure restartability.</li> | 
 | 588 |  | 
 | 589 | </ul> | 
 | 590 | </div> | 
 | 591 |  | 
 | 592 | <!-- ======================================================================= --> | 
 | 593 | <div class="doc_subsection"> | 
 | 594 |   <a name="ia64-be">Known problems with the IA64 back-end</a> | 
 | 595 | </div> | 
 | 596 |  | 
 | 597 | <div class="doc_text"> | 
 | 598 |  | 
 | 599 | <ul> | 
 | 600 | <li>The Itanium backend is highly experimental and has a number of known | 
 | 601 |     issues.  We are looking for a maintainer for the Itanium backend.  If you | 
 | 602 |     are interested, please contact the LLVMdev mailing list.</li> | 
 | 603 | </ul> | 
 | 604 |  | 
 | 605 | </div> | 
 | 606 |  | 
 | 607 | <!-- ======================================================================= --> | 
 | 608 | <div class="doc_subsection"> | 
 | 609 |   <a name="c-be">Known problems with the C back-end</a> | 
 | 610 | </div> | 
 | 611 |  | 
 | 612 | <div class="doc_text"> | 
 | 613 |  | 
 | 614 | <ul> | 
 | 615 | <li><a href="http://llvm.org/PR802">The C backend has only basic support for | 
 | 616 |     inline assembly code</a>.</li> | 
 | 617 | <li><a href="http://llvm.org/PR1658">The C backend violates the ABI of common | 
 | 618 |     C++ programs</a>, preventing intermixing between C++ compiled by the CBE and | 
 | 619 |     C++ code compiled with <tt>llc</tt> or native compilers.</li> | 
 | 620 | <li>The C backend does not support all exception handling constructs.</li> | 
 | 621 | <li>The C backend does not support arbitrary precision integers.</li> | 
 | 622 | </ul> | 
 | 623 |  | 
 | 624 | </div> | 
 | 625 |  | 
 | 626 |  | 
 | 627 | <!-- ======================================================================= --> | 
 | 628 | <div class="doc_subsection"> | 
 | 629 |   <a name="c-fe">Known problems with the llvm-gcc C front-end</a> | 
 | 630 | </div> | 
 | 631 |  | 
 | 632 | <div class="doc_text"> | 
 | 633 |  | 
 | 634 | <p>llvm-gcc does not currently support <a href="http://llvm.org/PR869">Link-Time | 
 | 635 | Optimization</a> on most platforms "out-of-the-box".  Please inquire on the | 
 | 636 | LLVMdev mailing list if you are interested.</p> | 
 | 637 |  | 
 | 638 | <p>The only major language feature of GCC not supported by llvm-gcc is | 
 | 639 |     the <tt>__builtin_apply</tt> family of builtins.   However, some extensions | 
 | 640 |     are only supported on some targets.  For example, trampolines are only | 
 | 641 |     supported on some targets (these are used when you take the address of a | 
 | 642 |     nested function).</p> | 
 | 643 |  | 
 | 644 | <p>If you run into GCC extensions which are not supported, please let us know. | 
 | 645 | </p> | 
 | 646 |  | 
 | 647 | </div> | 
 | 648 |  | 
 | 649 | <!-- ======================================================================= --> | 
 | 650 | <div class="doc_subsection"> | 
 | 651 |   <a name="c++-fe">Known problems with the llvm-gcc C++ front-end</a> | 
 | 652 | </div> | 
 | 653 |  | 
 | 654 | <div class="doc_text"> | 
 | 655 |  | 
 | 656 | <p>The C++ front-end is considered to be fully | 
 | 657 | tested and works for a number of non-trivial programs, including LLVM | 
 | 658 | itself, Qt, Mozilla, etc.</p> | 
 | 659 |  | 
 | 660 | <ul> | 
 | 661 | <li>Exception handling works well on the X86 and PowerPC targets. Currently | 
 | 662 |   only Linux and Darwin targets are supported (both 32 and 64 bit).</li> | 
 | 663 | </ul> | 
 | 664 |  | 
 | 665 | </div> | 
 | 666 |  | 
 | 667 | <!-- ======================================================================= --> | 
 | 668 | <div class="doc_subsection"> | 
 | 669 |   <a name="fortran-fe">Known problems with the llvm-gcc Fortran front-end</a> | 
 | 670 | </div> | 
 | 671 |  | 
 | 672 | <div class="doc_text"> | 
 | 673 | <ul> | 
 | 674 | <li>Fortran support generally works, but there are still several unresolved bugs | 
 | 675 |     in Bugzilla.  Please see the tools/gfortran component for details.</li> | 
 | 676 | </ul> | 
 | 677 | </div> | 
 | 678 |  | 
 | 679 | <!-- ======================================================================= --> | 
 | 680 | <div class="doc_subsection"> | 
 | 681 |   <a name="ada-fe">Known problems with the llvm-gcc Ada front-end</a> | 
 | 682 | </div> | 
 | 683 |  | 
 | 684 | <div class="doc_text"> | 
 | 685 | The llvm-gcc 4.2 Ada compiler works fairly well; however, this is not a mature | 
 | 686 | technology, and problems should be expected. | 
 | 687 | <ul> | 
 | 688 | <li>The Ada front-end currently only builds on X86-32.  This is mainly due | 
 | 689 | to lack of trampoline support (pointers to nested functions) on other platforms. | 
 | 690 | However, it <a href="http://llvm.org/PR2006">also fails to build on X86-64</a> | 
 | 691 | which does support trampolines.</li> | 
 | 692 | <li>The Ada front-end <a href="http://llvm.org/PR2007">fails to bootstrap</a>. | 
 | 693 | This is due to lack of LLVM support for <tt>setjmp</tt>/<tt>longjmp</tt> style | 
 | 694 | exception handling, which is used internally by the compiler. | 
 | 695 | Workaround: configure with --disable-bootstrap.</li> | 
 | 696 | <li>The c380004, <a href="http://llvm.org/PR2010">c393010</a> | 
 | 697 | and <a href="http://llvm.org/PR2421">cxg2021</a> ACATS tests fail | 
 | 698 | (c380004 also fails with gcc-4.2 mainline). | 
 | 699 | If the compiler is built with checks disabled then <a href="http://llvm.org/PR2010">c393010</a> | 
 | 700 | causes the compiler to go into an infinite loop, using up all system memory.</li> | 
 | 701 | <li>Some GCC specific Ada tests continue to crash the compiler.</li> | 
 | 702 | <li>The -E binder option (exception backtraces) | 
 | 703 | <a href="http://llvm.org/PR1982">does not work</a> and will result in programs | 
 | 704 | crashing if an exception is raised.  Workaround: do not use -E.</li> | 
 | 705 | <li>Only discrete types <a href="http://llvm.org/PR1981">are allowed to start | 
 | 706 | or finish at a non-byte offset</a> in a record.  Workaround: do not pack records | 
 | 707 | or use representation clauses that result in a field of a non-discrete type | 
 | 708 | starting or finishing in the middle of a byte.</li> | 
 | 709 | <li>The <tt>lli</tt> interpreter <a href="http://llvm.org/PR2009">considers | 
 | 710 | 'main' as generated by the Ada binder to be invalid</a>. | 
 | 711 | Workaround: hand edit the file to use pointers for <tt>argv</tt> and | 
 | 712 | <tt>envp</tt> rather than integers.</li> | 
 | 713 | <li>The <tt>-fstack-check</tt> option <a href="http://llvm.org/PR2008">is | 
 | 714 | ignored</a>.</li> | 
 | 715 | </ul> | 
 | 716 | </div> | 
 | 717 |  | 
 | 718 | <!-- *********************************************************************** --> | 
 | 719 | <div class="doc_section"> | 
 | 720 |   <a name="additionalinfo">Additional Information</a> | 
 | 721 | </div> | 
 | 722 | <!-- *********************************************************************** --> | 
 | 723 |  | 
 | 724 | <div class="doc_text"> | 
 | 725 |  | 
 | 726 | <p>A wide variety of additional information is available on the <a | 
 | 727 | href="http://llvm.org">LLVM web page</a>, in particular in the <a | 
 | 728 | href="http://llvm.org/docs/">documentation</a> section.  The web page also | 
 | 729 | contains versions of the API documentation which is up-to-date with the | 
 | 730 | Subversion version of the source code. | 
 | 731 | You can access versions of these documents specific to this release by going | 
 | 732 | into the "<tt>llvm/doc/</tt>" directory in the LLVM tree.</p> | 
 | 733 |  | 
 | 734 | <p>If you have any questions or comments about LLVM, please feel free to contact | 
 | 735 | us via the <a href="http://llvm.org/docs/#maillist"> mailing | 
 | 736 | lists</a>.</p> | 
 | 737 |  | 
 | 738 | </div> | 
 | 739 |  | 
 | 740 | <!-- *********************************************************************** --> | 
 | 741 |  | 
 | 742 | <hr> | 
 | 743 | <address> | 
 | 744 |   <a href="http://jigsaw.w3.org/css-validator/check/referer"><img | 
 | 745 |   src="http://jigsaw.w3.org/css-validator/images/vcss-blue" alt="Valid CSS"></a> | 
 | 746 |   <a href="http://validator.w3.org/check/referer"><img | 
 | 747 |   src="http://www.w3.org/Icons/valid-html401-blue" alt="Valid HTML 4.01"></a> | 
 | 748 |  | 
 | 749 |   <a href="http://llvm.org/">LLVM Compiler Infrastructure</a><br> | 
 | 750 |   Last modified: $Date$ | 
 | 751 | </address> | 
 | 752 |  | 
 | 753 | </body> | 
 | 754 | </html> |