ARM follows Apple to the open source LLVM compiler

About ten years after Apple moved to its use - and hired one of the programmers behind its creation - ARM Ltd. has made the move in its tool chain to the use of the open source - but misnamed - Low Level Virtual Machine compiler (LLVM) and its C-language Clang front end.

It will be available first for its Cortex-A50 processor and then later in other embedded focused cores such as the Cortex-M series. A fundamental shift away from proprietary technology. the new ARM Compiler 6 also supports the coming 64bit ARMv8 architecture and will be integrated into future versions of the DS-5 development suite for high- and system-on-chip development.

The ARM v8 backend is in open source currently and is now in the process of integration into the DS-5 tool chain. After V8, next to to added will be the V7A and R are cores, probably by no later than the end of 2014.

Up to now, said Hobson Bullman, general manager of development solutions, ARM has supported GCC open-source, but LLVM will form the basis of all new compiler technology developments. The compiler will be offered as an open source and free tool within the tool chain along with ARM's proprietary software tool componets.

Despite is misleading name, LLVM is an extensible compiler framework developed originally at the University of Illinois for testing such advanced code generation techniques such as link-time code generation and just-in-time compilation. Bullman said LLVM's modular framework makes it easier to develop and test new optimizations, leading to better performing code and lower power consumption.

Clang is a C/C++ compiler front end based on a modular architecture with well-defined interfaces for applying complimentary tools such as code analyzers and code generators. Clang also offers improved diagnostic capabilities,
leading to higher quality code and shorter development cycles, he said.

One of the original aims of Clang was replacement of the GCC compiler at the core of most embedded tool suites with one that is more integrated development environments (IDEs) friendly and has more extensive multi-threading support. However, up until recently the run time performance of the compiled programs using GCC out performed LLVM by about 10%. But more recent reports indicated that LLVM has caught up and is capable of compiling binaries of about equal performance, except for programs using OpenMP.

LLVM project started in 2000 at the University of Illinois at Urbana–Champaign, under the direction of Vikram Adve and Chris Lattner. LLVM was released under the University of Illinois/NCSA Open Source License, a non-copyleft license. In 2005, Apple Inc. hired Lattner and formed a team to work on the LLVM system for various uses within Apple's development systems, including those for its Mac OS X and its iOS for the iPhone, i,Pad and IPod consumer and mobile products.

Although LLVM was originally written to be a replacement for the existing C code generator in the GCC stack it now supports compiling of Ada, C, C++, D, Fortran, and Objective-C, using various front ends, some derived from version 4.0.1 and 4.2 of the GNU Compiler Collection (GCC).

In addition to Clang, there are a range of front ends to LLVM for a variety of languages including Ada, C++, D, Fortran, Objective-C, and Haskell. In additon to ARM processors, LLVM now supports the instruction sets for a wide variety of mobile and embedded processors, including MBlaze, MIPS, Nvidia PTX, PowerPC, R600, SPARC, x86/x86-64, and XCore.