• DocumentCode
    2746090
  • Title

    LLVM: a compilation framework for lifelong program analysis & transformation

  • Author

    Lattner, Chris ; Adve, Vikram

  • Author_Institution
    Illinois Univ., Chicago, IL, USA
  • fYear
    2004
  • fDate
    20-24 March 2004
  • Firstpage
    75
  • Lastpage
    86
  • Abstract
    We describe LLVM (low level virtual machine), a compiler framework designed to support transparent, lifelong program analysis and transformation for arbitrary programs, by providing high-level information to compiler transformations at compile-time, link-time, run-time, and in idle time between runs. LLVM defines a common, low-level code representation in static single assignment (SSA) form, with several novel features: a simple, language-independent type-system that exposes the primitives commonly used to implement high-level language features; an instruction for typed address arithmetic; and a simple mechanism that can be used to implement the exception handling features of high-level languages (and setjmp/longjmp in C) uniformly and efficiently. The LLVM compiler framework and code representation together provide a combination of key capabilities that are important for practical, lifelong analysis and transformation of programs. To our knowledge, no existing compilation approach provides all these capabilities. We describe the design of the LLVM representation and compiler framework, and evaluate the design in three ways: (a) the size and effectiveness of the representation, including the type information it provides; (b) compiler performance for several interprocedural problems; and (c) illustrative examples of the benefits LLVM provides for several challenging compiler problems.
  • Keywords
    C language; exception handling; optimising compilers; program diagnostics; virtual machines; code representation; compiler framework; compiler performance; compiler transformations; exception handling; language-independent type-system; low level virtual machine; program analysis; program transformation; static single assignment form; typed address arithmetic; Algorithm design and analysis; Application software; Arithmetic; High level languages; Information analysis; Performance analysis; Program processors; Runtime; Software safety; Virtual machining;
  • fLanguage
    English
  • Publisher
    ieee
  • Conference_Titel
    Code Generation and Optimization, 2004. CGO 2004. International Symposium on
  • Print_ISBN
    0-7695-2102-9
  • Type

    conf

  • DOI
    10.1109/CGO.2004.1281665
  • Filename
    1281665