On December 1, LLVM 3.0 (Low Level Virtual Machine) was released - “Compiler Infrastructure”, which generates platform-independent optimized low-level bytecode (see the
review on Habré). LLVM is used including in official
development tools for Mac OS X and iOS.
Six months have passed since the release of LLVM 2.9, quite a lot of
innovations , including the new
“greedy” allocator of registers . It uses interesting optimization methods and can significantly improve code performance.
Among other improvements in LLVM: full support for
atomic operations and the C ++ memory model appeared, the MIPS backend was greatly improved, and profiling support for gprof and gcov appeared.
The developers say that although this is an incremental release, the major version number “allowed to get rid of old baggage”. In particular, LLVM 3.0 no longer supports llvm-gcc front-end. Clang or Dragonegg is recommended instead. The first is better for C, and Dragonegg is better for those who want to use GCC through a plugin. A bundle of GCC frontend and LLVM backend supports C, C ++, Fortran and Ada, partially Java, Objective-C, Objective-C ++ and Google Go.
')
LLVM 3.0 also does not accept .bc or .ll files from LLVM 2.8 or earlier versions. The new file format is promised to be made permanent forever, so after version 3.0 it will not change.
Included with LLVM 3.0 is the Clang 3.0 compiler, which has recently greatly increased performance and also added several important features (see
release notes ), including enhanced support for C'1x and C ++ '11 (C ++' 0x), added Support for Automatic Reference Counting from Objective-C.
As a result, Clang itself is faster, compiles faster code, and handles errors better than LLVM 2.9 when using GCC.