LLVM:一种用于
终身程序分析和转换的编译框架
Chris LattnerVikram Adve

摘要

本文描述了LLVM(低级虚拟机),这是一个编译框架,旨在通过在编译时、链接时、运行时和脱机时为编译器转换提供高级信息,来支持对任意程序进行透明的、终身程序分析和转换。LLVM在静态单赋值 (SSA) 形式下定义了一种通用低级代码表示,它具有几个新颖的特性:一个简单、与语言无关的类型系统,它公开了通常用于实现高级语言特性的基元;一个用于类型化地址算术的指令;以及一个可以用于统一高效地实现高级语言异常处理功能(以及setjmp/longjmp在C语言中)的简单机制。LLVM编译器框架和代码表示共同提供了一系列关键能力,这些能力对于程序的实用、终身分析和转换非常重要。据我们所知,现有的编译方法都没有提供所有这些功能。我们描述了LLVM表示和编译器框架的设计,并通过三种方式评估了该设计:(a)表示的大小和有效性,包括它提供的类型信息;(b)几个过程间问题的编译器性能;以及(c)LLVM为几个具有挑战性的编译器问题带来的益处的说明性示例。

出版信息

"LLVM:一种用于终身程序分析和转换的编译框架",Chris Lattner & Vikram Adve
技术报告 #UIUCDCS-R-2003-2380,伊利诺伊大学计算机科学系,2003年9月。

本文是CGO'04上发表的论文的早期版本,已被其取代。

下载

BibTeX条目

  @TechReport{LattnerAdve:LifeLong,
    Author      = {Chris Lattner and Vikram Adve},
    Title       = "{LLVM: A Compilation Framework for Lifelong Program Analysis & Transformation}",
    Institution = "{Computer Science Dept., Univ. of Illinois at Urbana-Champaign}",
    Number      = {UIUCDCS-R-2003-2380},
    Type        = {Tech. Report},
    Month       = {Sep},
    Year        = {2003}
  }