Development Service

LLVM, CLANG & Gold

Access Softek has a specialized team of developers dedicated to working on the most important new open source compiler development projects in progress. We have been working on LLVM and supporting tools for over 3 years.  

We offer LLVM, Clang and Gold consulting services for companies seeking to customize these open source projects for their particular application or environment.

 

LLVM

The Low Level Virtual Machine (LLVM) is designed for compile-time, install-time, run-time and even idle-time. LLVM is an optimizing framework and code generator. All LLVM-based optimizers read in and write out LLVM code: the code generation which mostly consists of translating instruction names and allocating registers, happens at the very end.

LLVM is a virtual machine infrastructure that does not provide any of the high-level features you would find in likes of Java or .NET virtual machines, including garbage collections and an object model.

 

CLANG

The goal of Clang is to take care of the front-end problems. Clang's architecture is very straightforward.

Clang is a new C-targeted compiler intended specifically to work on top of LLVM. The combination of Clang and LLVM provides the majority of a tool chain, allowing the replacement of the whole GCC stack. Because it is built with a library-based design, like the rest of LLVM, Clang is easy to embed into other applications.

Clang is designed to retain more information during the compilation process than GCC and preserve the overall form of the original code. The objective of this is to make it easier to map errors back into the original source. The error reports offered by Clang are also aimed to be more detailed and specific, as well as machine-readable.

 

Gold

It is a good idea to explicitly set certain target parameters for Gold to perform some relocation or do some linking time optimizations, especially in the cross-compiling environment.

In the Gold, we can set a reasonable default for output file format and perform some architecture-specific relocation or optimization.