19 Facts About LLVM

1.

LLVM is a set of compiler and toolchain technologies that can be used to develop a front end for any programming language and a back end for any instruction set architecture.

FactSnippet No. 852,258
2.

LLVM is designed around a language-independent intermediate representation that serves as a portable, high-level assembly language that can be optimized with a variety of transformations over multiple passes.

FactSnippet No. 852,259
3.

LLVM project started in 2000 at the University of Illinois at Urbana–Champaign, under the direction of Vikram Adve and Chris Lattner.

FactSnippet No. 852,260
4.

LLVM was originally developed as a research infrastructure to investigate dynamic compilation techniques for static and dynamic programming languages.

FactSnippet No. 852,261
5.

LLVM has been an integral part of Apple's Xcode development tools for macOS and iOS since Xcode 4.

FactSnippet No. 852,262
6.

Name LLVM was originally an initialism for Low Level Virtual Machine.

FactSnippet No. 852,263
7.

However, the LLVM project evolved into an umbrella project that has little relationship to what most current developers think of as a virtual machine.

FactSnippet No. 852,264
8.

LLVM can provide the middle layers of a complete compiler system, taking intermediate representation code from a compiler and emitting an optimized IR.

FactSnippet No. 852,265
9.

LLVM can accept the IR from the GNU Compiler Collection toolchain, allowing it to be used with a wide array of existing compiler front-ends written for that project.

FactSnippet No. 852,266
10.

LLVM can generate relocatable machine code at compile-time or link-time or even binary machine code at run-time.

FactSnippet No. 852,267
11.

LLVM allows code to be compiled statically, as it is under the traditional GCC system, or left for late-compiling from the IR to machine code via just-in-time compilation, similar to Java.

FactSnippet No. 852,268
12.

On systems with low-end GPUs, LLVM will compile optional procedures that run on the local central processing unit that emulate instructions that the GPU cannot run internally.

FactSnippet No. 852,269
13.

LLVM improved performance on low-end machines using Intel GMA chipsets.

FactSnippet No. 852,270
14.

Newer results in 2013 indicate that LLVM has now caught up with GCC in this area, and is compiling binaries of approximately equal performance.

FactSnippet No. 852,271
15.

LLVM was originally written to be a replacement for the existing code generator in the GCC stack, and many of the GCC front ends have been modified to work with it, resulting in the now-defunct LLVM-GCC suite.

FactSnippet No. 852,272
16.

Widespread interest in LLVM has led to several efforts to develop new front ends for a variety of languages.

FactSnippet No. 852,273
17.

Core of LLVM is the intermediate representation, a low-level programming language similar to assembly.

FactSnippet No. 852,274
18.

LLVM project introduces another type of intermediate representation called MLIR which helps build reusable and extensible compiler infrastructure by employing a plugin architecture named Dialect.

FactSnippet No. 852,275
19.

Formerly, LLVM relied on the system assembler, or one provided by a toolchain, to translate assembly into machine code.

FactSnippet No. 852,276