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