While the features of LLVM 3.2
and its Clang C/C++ compiler front-end have been talked about in numerous Phoronix articles over the past few months, here's an overview of the new features for this open-source compiler infrastructure update that was released on Friday
Key features for LLVM/Clang 3.2 include:
- An automatic loop vectorizer
for delivering some performance improvements
. This auto loop vectorizer will be advanced with LLVM 3.3
and then enabled by default while for now it requires a compile-time switch.
- Improved PowerPC processor support
- Various processor support improvements
, such as for Apple's latest ARM SoC and improving the Intel instruction set extension support (AVX2).
- Polly polyhedral optimizations
including the integration of the PLUTO support, more MIT-licensed code rather than GPL, isl-based code generation, OpenMP code generation fixes, and other work.
- The new NVPTX back-end
was integrated that was supplied by NVIDIA and is used by their OpenCL/CUDA compiler for GPGPU on GeForce/Quadro/Tesla graphics processors.
- Various optimizer improvements, but LLVM/Clang 3.2 compiler benchmarks
haven't shown the new release to be dramatically faster than its predecessors for most workloads.
- Improved compiler warnings / debugging information for the Clang compiler front-end.
- DragonEgg, the GCC plug-in that allows using LLVM in GCC for its code generators and optimizers under several different programming languages, now allows for LLVM plug-ins to be loaded, supports thread-local storage models, passes variable life-time information to the LLVM optimizers, and can run with a non-LTO GCC build.
While this is a nice update for the increasingly popular open-source compiler, among the work not found in this new stable release is not yet any mainline OpenMP support
with LLVM/Clang, Unified Parallel C
, no OpenACC
, and the recently-merged AMD Radeon R600 GPU back-end
won't appear until LLVM 3.3.
Download the latest release and find out more information from LLVM.org