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 |
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 |
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 |
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 |
LLVM was originally developed as a research infrastructure to investigate dynamic compilation techniques for static and dynamic programming languages.
FactSnippet No. 852,261 |
Name LLVM was originally an initialism for Low Level Virtual Machine.
FactSnippet No. 852,263 |
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 |
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 |
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 |
LLVM can generate relocatable machine code at compile-time or link-time or even binary machine code at run-time.
FactSnippet No. 852,267 |
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 |
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 |
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 |
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 |
Widespread interest in LLVM has led to several efforts to develop new front ends for a variety of languages.
FactSnippet No. 852,273 |
Core of LLVM is the intermediate representation, a low-level programming language similar to assembly.
FactSnippet No. 852,274 |
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 |
Formerly, LLVM relied on the system assembler, or one provided by a toolchain, to translate assembly into machine code.
FactSnippet No. 852,276 |