At this point the LLVM 3.1 branch is only for bug-fixes after patches have received the approval of their code owners. Wendling announced the branching on the llvmdev mailing list. The LLVM 3.1 official release is expected to happen on 14 May, following the wrap-up of two test phases.
Below are a few of the features that developers can look forward to with LLVM 3.1.
- Improved support for AVX1 to benefit Intel Sandy Bridge and Ivy Bridge processors (along with AMD Bulldozer) and there's initial support for AVX2 with Intel Haswell CPUs. I have posted some new LLVM/Clang 3.1 benchmarks on Sandy Bridge while some new AMD Bulldozer and Intel Ivy Bridge benchmarks under Linux are forthcoming.
- Polly has now become an official LLVM project and can be loaded directly into Clang. Polly is an experimental optimizer for data locality and parallelism with high-level loop optimizations and automatic parallelization. The automatic parallelization uses the OpenMP run-time but still LLVM/Clang doesn't have proper OpenMP support yet. There's also an automatic scheduling optimizer that was derived from the Pluto compiler.
- IR support for half-float.
- A new basic-block auto-vectorization pass.
- Under Mac OS X / Darwin the ARM code generation target now has a "full-featured" integrated assembler.
Those are some of the features to LLVM 3.1, a more exhaustive list will come closer to the mid-May release of this GCC alternative. LLVM 3.1 will succeed LLVM 3.0, which was released this past December. Sadly not finding its way into the 3.1 release is the Radeon R600 LLVM back-end.
LLVM/Clang 3.1 has to compete with the recently-released GCC 4.7. Expect more LLVM benchmarks soon. There's also going to be a new Linux compiler roundabout with GCC, LLVM/Clang, DragonEgg, Open64, and EKOPath as well.