LLVM 1.0 Release Notes |
Written by Chris Lattner
Introduction |
For more information about LLVM, including information about potentially more current releases, please check out the main web site. If you have questions or comments, the LLVM developer's mailing list is a good place to send them.
What's New? |
The default optimizer sequence used by the C/C++ front-ends is:
At link-time, the following optimizations are run:
At this time, LLVM is known to work properly with SPEC CPU 2000, the Olden benchmarks, and the Ptrdist benchmarks among many other programs. Note however that the Sparc and X86 backends do not currently support exception throwing or long jumping (including 253.perlbmk in SPEC). For these programs you must use the C backend.
Portability and Supported Platforms |
Known Problems |
for (i = 0; i != 1000000; ++i) { int X[n]; foo(X); }
The following GCC extensions are partially supported. An ignored attribute means that the LLVM compiler ignores the presence of the attribute, but the code should still work. An unsupported attribute is one which is ignored by the LLVM compiler, which will cause a different interpretation of the program.
The following extensions are known to be supported:
typeof
: referring to the type of an expression.
?:
, ",
" and casts in lvalues.
?:
expression.
void
-pointers and function pointers.
\e
stands for the character <ESC>.
__const__
, __asm__
, etc., for header files.
enum foo;
, with details to follow.
If you run into GCC extensions which have not been included in any of these lists, please let us know (also including whether or not they work).
Additional Information |
If you have any questions or comments about LLVM, please feel free to contact us via the mailing lists.