ARM has decided to shift from using its in-house compiler technology to the open-source combination of Clang and LLVM, which are also steadily displacing the Gnu C compiler tools from other embedded toolchains.
Daniel Owens, product manager for software development tools at ARM, cited a more advanced infrastructure and a more flexible source-code licence compared to the Gnu Public Licence (GPL) as the main reasons for moving over to LLVM for Compiler 6: “LLVM’s modular architecture with well defined interfaces makes it easier to develop and test new features. We think it is a better framework for more advanced code generation techniques such as just-in-time compilation, link-time code generation, and profile-guided optimisation.
“The non-GPL aspect allows us to optionally contribute back to the open source, or keep our changes proprietary. For example, if we are developing support for new cores that have not yet been announced, we can provide compiler builds to lead partners that are proprietary, thus protecting our IP until the products are announced.”
ARM has traditionally based its compiler offerings on the Norcroft code developed originally for the Acorn Archimedes personal computer. Unlike the GPL, the licence used by LLVM allows developers to keep inhouse enhancements they use for products they provide and will not compel users of the code to contribute their own changes to the open-source pool. Owens said enhancements will, for the most part, be contributed back to the project.
“We will work primarily in the open source [environment], meaning we will contribute back most enhancements. We will then build our commercial product based on a snapshot of the open source. The ARM Compiler 6 is not an open source compiler, but it is built from open source and shipped as a closed-source binary. The benefit is that we can collaborate with our partners via the open source, and then provide the benefits of this collaborate to partners and OEMs in a professionally developed, supported, and maintained toolchain,” Owens explained.