LLVM is a compiler infrastructure designed for compile-time, link-time, runtime, and “idle-time” optimization of programs from arbitrary programming languages. It currently supports compilation of C and C++ programs, using front-ends derived from gcc 3.