LLVM 3.3 Achieves Full C++11 Compliance

by Jeff Martin on Jun 28, 2013 |

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


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

General Feedback
Marketing and all content copyright © 2006-2016 C4Media Inc. hosted at Contegix, the best ISP we've ever worked with.
Privacy policy

We notice you're using an ad blocker

We understand why you use ad blockers. However to keep InfoQ free we need your support. InfoQ will not provide your data to third parties without individual opt-in consent. We only work with advertisers relevant to our readers. Please consider whitelisting us.