The result, which will not be open-source, is to be called ARM Compiler 6, and will be released first for 64bit ARM v8 architecture cores in an ‘initial’ form this year.
Full 64bit ARM v8 support is expected later this year, as is full support for ARM v7A, v7R, and initial support for v7M cores: that is, all Cortex-Mx cores except M0 and M0+.
Support for Cortex-M0 and M0+ (ARM v6M architecture) will follow, but this is unlikely to extend to other ARM v6 cores. “We will probably not implement ARM7 and ARM9 support. There is plenty of support out there for them already,” ARM software tool manager Dan Owens told Electronics Weekly.
“We used this framework for our next generation of compiler because we wanted something scalable. It is modern and modular – you can operate on a portion of the compiler without having to know what is going on at the other end of the compiler,” said Owens.
According to Owens, LLVM is in three parts: The front-end, which parses source code C or C++, breaks it down and prepares it. The middle, which provides various levels of target-agnostic optimisation. And the back-end, which converts the optimised code into code specific to ARM, x86, MIPS, PowerPC, or other processor.
It is at the back-end where ARM has done, and will continue to do, most of its work to create and maintain Compiler 6, said Owens.
Another reason for going with LLVM is that it has a BSD-style open-source licence, so licensees can keep changes secret. GCC is another open-source compiler, but with a GPL licence.
“If we implemented a super-secret architecture, we can implement features in a private way with LLVM,” said Owens. “GPL would be a problem. We would be obliged to give changes back. We would have to expose what we have done.”
Compiler 5 has years of debugging behind it, how will Owens prove Compiler 6 is reliable?
“We have been working with the LLVM compiler for a couple of years now,” he said. “We are putting 25 years of test suites on to it.”
Compiler 6 will not be a super-set of Compiler 5.
“In the full release, we are not trying to re-create ARM Compiler 5. Some Compiler 5 extensions are not relevant now; for example, the extensions for the Symbian operating system,” said Owens. “We will support C and C++ at the equivalent level as ARM Compiler 5, except edge cases like Symbian.”
ARM Compiler 6 will appear in a version of the firm’s DS-5 development environment called ‘DS-5 Ultimate Edition’, which will also include an ARM v8 debugger and performance analyser, plus an ARMv8 simulation environment (called ‘Fixed Virtual Platform’) to compensate for the lack of 64bit ARM silicon around on which to test code.
DS-5 Professional will remain available with Compiler 5.
For those who are curious, LLVM started as a research project at the University of Illinois, and once stood for ‘low-level virtual machine’. It has moved far from its virtual machine roots, and now LLVM is simply a name and not an acronym.