The LLVM Instruction Set and Compilation Strategy
Chris Lattner and Vikram Adve

Abstract:

This document introduces the LLVM compiler infrastructure and instruction set, a simple approach that enables sophisticated code transformations at link time, runtime, and in the field. It is a pragmatic approach to compilation, interfering with programmers and tools as little as possible, while still retaining extensive high-level information from source-level compilers for later stages of an application's lifetime. We describe the LLVM instruction set, the design of the LLVM system, and some of its key components.

Published:

"The LLVM Instruction Set and Compilation Strategy", Chris Lattner & Vikram Adve
Technical Report #UIUCDCS-R-2002-2292, Computer Science Dept., Univ. of Illinois, Aug. 2002.

Update:

Since this document was published, one significant change has been made to LLVM: the GCC C front-end described in the document has been completely rewritten from scratch. The new C front-end is based on the mainline GCC CVS tree (what will become GCC 3.4), and expands type-safe LLVM code from the GCC AST representation, instead of from the untyped GCC RTL representation.

This change dramatically improved the quality of code generated and the stability of the system as a whole.

Download:

BibTeX Entry:

NOTE: This document has been superseded by LLVM: An Infrastructure for Multi-Stage Optimization. If you want to cite a paper about LLVM, please cite it instead.
@TechReport{LattnerAdve:LLVM:ISCS,
  Author      = "{Chris Lattner and Vikram Adve}",
  Title       = "{The LLVM Instruction Set and Compilation Strategy}",
  Institution = "{CS Dept., Univ. of Illinois at Urbana-Champaign}",
  Number      = {UIUCDCS-R-2002-2292},
  Type        = {Tech. Report},
  Month       = {Aug},
  Year        = {2002}
}