This is a big new release with a lot of features. Clang now supports all of the features in the current working draft of the upcoming C++ standard, provisionally named C++1y. The static analyzer has greatly improved C++ support, produces fewer false positives and catches more bugs. Clang also includes a few new capabilities: 1) a tool called “clang-format” which can be used in an IDE or text editor to auto-format your code according to builtin styles, and 2) a new (experimental!) driver designed for drop-in compatibility with Visual Studio on Windows.
In the code generator, overall performance is greatly increased. Notably, the loop auto-vectorizer is now enabled at -Os and -O2 in addition to -O3 (with appropriately tuned heuristics for each level). The SLP (“straight-line code”) auto-vectorizer is now enabled by default as well. Many targets have made major leaps, but the R600 target is now built by default (instead of experimental), the PowerPC backend has made several major improvements to code generation quality and compile time, and the X86, SPARC, ARM32, Aarch64 and SystemZ backends have all seen major feature work.
In addition to all of the improvements, there is one notable change: clang -O4 now no longer implicitly enables link-time optimization. LTO continues to be available with the -flto flag, and can be enabled at any optimization level. To get the previous -O4 behavior, simply use “clang -O3 -flto”. In addition, LLVM 3.4 will be the last release that will build with a plain C++'98 compiler. Future releases will require some C++'11 support in the host compiler to build.
LLVM 3.4 is the result of an incredible number of people working together over the last six months, but this release would not be possible without our volunteer release team! Thanks to Bill Wendling for making it all possible by shepherding the release, and to the awesome release testers: Arnaud A. de Grandmaison, Ben Pope, Dimitry Andric, Duncan Sands, Erik Verbruggen, Hans Wennborg, Nikola Smiljanic, Paweł Worach, Rafael Espíndola, Renato Golin, Sebastian Dreßler, Sylvestre Ledru, and Tom Stellard.
If you have questions or comments about this release, please contact the LLVMdev mailing list! Onward to LLVM 3.5!
LLVM 3.3 Release Announcement: