Clang 3.4 Released
Written by Kay Ewbank   
Friday, 10 January 2014

The LLVM 3.4 compiler has been released with an updated Clang C/C++ compiler front-end and new compiler tools.

 

The LLVM Project is a collection of modular and reusable compiler and toolchain technologies. It began life as a research project at the University of Illinois, with the goal of providing a modern, SSA-based compilation strategy capable of supporting both static and dynamic compilation of arbitrary programming languages.

The Clang project was created in order to create a new C, C++, Objective C and Objective C++ front-end for the LLVM compiler. It is a "LLVM native" C/C++/Objective-C compiler that aims to deliver very fast compiles, about three times faster than GCC when compiling Objective-C code in a debug configuration.

One of the main improvements in LLVM 3.4 is the enabling by default of the AMD R600 GPU LLVM back-end. Until now this was an ‘experimental’ feature, but the new version moves beyond that. The advantage this offers is that it means you can use it with the open-source AMD Linux graphics driver.

Other improvements include a new Clang-Format utility that you can use to auto-format code, more widespread use of the loop vectorizer at different optimization levels, and the fact the SLP straight-line vectorizer is turned on by default. There’s a driver for Microsoft Visual Studio.

Support has been added for the MIPS SIMD architecture, as well as experimental support for SPARC V9. Several improvements mean the PowerPC backend in terms of code generation quality and compile time. The X86, SPARC, ARM32, Aarch64 and SystemZ backends have all been improved.

According to the Clang 3.4 release notes, the main improvements to the Clang implementation start with improvements to Clang’s diagnostics to catch more issues, explain them more clearly, and provide more accurate source information about them.

The C Language support in Clang has new checked arithmetic builtins for security critical applications. C++ changes include support for the 2013-08-28 draft of the ISO WG21 SG10 feature test macro recommendations. These aim to provide a portable method to determine whether a compiler supports a language feature, much like Clang’s __has_feature macro.

One major improvement is support for all the features in the current working draft of the C++1y standard. This will become the new C++ standard when finalised. Support for the following major new features has been added since Clang 3.3:

  • Generic lambdas and initialized lambda captures
  • Deduced function return types (auto f() { return 0; })
  • Generalized constexpr support (variable mutation and loops)
  • Variable templates and static data member templates.
  • Use of ' as a digit separator in numeric literals.

Clang-cl has also added a new experimental driver mode that is designed for compatibility with Visual Studio’s compiler, cl.exe. This driver mode makes Clang accept the same kind of command-line options as cl.exe. The installer will attempt to expose clang-cl in any Visual Studio installations on the system as a Platform Toolset, e.g. “LLVM-vs2012”.

 

More Information

Download source code for LLVM and Clang

LLVM 3.4 release notes

Clang 3.4 release notes

Related Articles

AppCode 2.5 Includes More Code Generation Options

Casablanca: C++ in the Cloud

Recognition for LLVM    

Firefox Runs JavaScript Games At Native Speed         

 

To be informed about new articles on I Programmer, install the I Programmer Toolbar, subscribe to the RSS feed, follow us on, Twitter, Facebook, Google+ or Linkedin,  or sign up for our weekly newsletter.

 

espbook

 

Comments




or email your comment to: comments@i-programmer.info

 

Banner


Gender Differences In Coding Style
13/11/2024

A novel investigation into the gender gap between men and women regarding coding ability was undertaken by Dr Siân Brooke. Her conclusion? There is a difference in the Python code [ ... ]



Julia 1.1 Adds Array Alternative
17/10/2024

Julia 1.1 has been released with improvements including a new Memory type that provides a lower-level container as an alternative to Array.


More News

You can  here: http://llvm.org/releases/download.html#3.4

Last Updated ( Friday, 10 January 2014 )