Modern programming languages and software engineering principles are causing increasing problems for compiler systems. Traditional approaches, which use a simple compile-link-execute model, are unable to provide adequate application performance under the demands of the new conditions. Traditional approaches to interprocedural and profile-driven compilation can provide the application performance needed, but require infeasible amounts of compilation time to build the application.
This thesis presents LLVM, a design and implementation of a compiler infrastructure which supports a unique multi-stage optimization system. This system is designed to support extensive interprocedural and profile-driven optimizations, while being efficient enough for use in commercial compiler systems.
The LLVM virtual instruction set is the glue that holds the system together. It is a low-level representation, but with high-level type information. This provides the benefits of a low-level representation (compact representation, wide variety of available transformations, etc.) as well as providing high-level information to support aggressive interprocedural optimizations at link- and post-link time. In particular, this system is designed to support optimization in the field, both at run-time and during otherwise unused idle time on the machine.
This thesis also describes an implementation of this compiler design, the LLVM compiler infrastructure, proving that the design is feasible. The LLVM compiler infrastructure is a maturing and efficient system, which we show is a good host for a variety of research. More information about LLVM can be found on its web site at: http://llvm.cs.uiuc.edu/
This thesis supercedes an older technical report.
"LLVM: An Infrastructure for Multi-Stage Optimization", Chris Lattner.
Masters Thesis, Computer Science Dept., University of Illinois at Urbana-Champaign, Dec. 2002.
The "book form" is useful if you plan to print this out. Print the file out double sided, fold it in half, and staple it in the middle of the page. It dramatically reduces the number of pages of paper used.
@MastersThesis{Lattner:MSThesis02, author = {Chris Lattner}, title = "{LLVM: An Infrastructure for Multi-Stage Optimization}", school = "{Computer Science Dept., University of Illinois at Urbana-Champaign}", year = {2002}, address = {Urbana, IL}, month = {Dec}, note = {{\em See {\tt http://llvm.cs.uiuc.edu}.}} }