LLVM 3.3 Achieves Full C++11 Compliance

| by Jeff Martin Follow 16 Followers on Jun 28, 2013. Estimated reading time: 1 minute |

The latest release of the LLVM project brings forth a host of new features, including full C++11 compiler support developed through the Clang sub-project.  Foremost among the new features is support for several new CPU architectures, including AArch64 (64-bit ARM), AMD’s R600 GPU, IBM’s z/Architecture (s390x), and several improvements to the MIPS and PowerPC targets.  

LLVM has two vectorizers: loop and freshly added SLP.  For 3.3, the loop vectorizer benefits from several improvements to generate better code and is enabled by default when the –O3 flag is used.  Some of the new additions include runtime checks of pointers, reverse iterators, and If conversion.  The SLP vectorizer (superword-level parallelism) combines “similar independent instructions into vector instructions”.  SLP vectorizer is enabled with the flag “-fslp-vectorize”.

Dragon Egg is a sub-project of LLVM which brings LLVM technology to GCC.  DragonEgg replaces the optimizer’s and code generators in GCC with its own.  Notable LLVM 3.3 improvements are support for gcc-4.8.1+, and better debug info.  LLDB, the Low Level Debugger, adds several Linux features:

  • Support for watchpoints
  • vim integration for lldb commands and program status using a vim plug-in
  • Improved register support including vector registers
  • Builds with cmake/ninja/auto-tools/clang 3.3/gcc 4.6

Developers using C++11 (or those considering it for use with an existing code base) can explore LLVM’s C++11 migration tool, cpp11-migrate.  As noted on the LLVM blog, “The purpose of the C++11 Migrator is to do source-to-source translation to migrate existing C++ code to use C++11 features to enhance maintainability, readability, runtime performance, and compile-time performance.”

LLVM 3.3 is distributed in a variety of formats, including source and pre-built binaries.  Users of Linux, FreeBSD, and Mac OS X may download an installer from the project directly.  Alternatively check with your operating system’s distribution or compile from source.  The LLVM team provides detailed instructions on how the compilation can be done.

Rate this Article

Adoption Stage

Hello stranger!

You need to Register an InfoQ account or or login to post comments. But there's so much more behind being registered.

Get the most out of the InfoQ experience.

Tell us what you think

Allowed html: a,b,br,blockquote,i,li,pre,u,ul,p

Email me replies to any of my messages in this thread
Community comments

Allowed html: a,b,br,blockquote,i,li,pre,u,ul,p

Email me replies to any of my messages in this thread

Allowed html: a,b,br,blockquote,i,li,pre,u,ul,p

Email me replies to any of my messages in this thread


Login to InfoQ to interact with what matters most to you.

Recover your password...


Follow your favorite topics and editors

Quick overview of most important highlights in the industry and on the site.


More signal, less noise

Build your own feed by choosing topics you want to read about and editors you want to hear from.


Stay up-to-date

Set up your notifications and don't miss out on content that matters to you