For designing and implementing LLVM, a persistent, language-independent program representation that enables code analysis and transformation, including compile time, link time, and run time optimizations, for arbitrary languages. Since its open source release in 2003, LLVM has become widely used in both commercial products and for computer science research.