The Low-Level Virtual Machine (LLVM) is a collection of libraries and
tools that make it easy to build compilers, optimizers, Just-In-Time
code generators, and many other compiler-related programs. LLVM
uses a single, language-independent virtual instruction set both
as an offline code representation (to communicate code between
compiler phases and to run-time systems) and as the compiler internal
representation (to analyze and transform programs). This persistent
code representation allows a common set of sophisticated compiler
techniques to be applied at compile-time, link-time, install-time,
run-time, or "idle-time" (between program runs).
The strengths of the LLVM infrastructure are its extremely
simple design (which makes it easy to understand and use),
source-language independence, powerful mid-level optimizer, automated
compiler debugging support, extensibility, and its stability and
reliability. LLVM is currently being used to host a wide variety of
academic research projects and commercial projects. LLVM includes C
and C++ front-ends, a front-end for a Forth-like language (Stacker),
a young scheme front-end, and Java support is in development. LLVM can
generate code for X86, SparcV9, PowerPC, or it can emit C code.
LLVM is the key component of the clang compiler and the gcc plugin called
dragonegg.