现代编程语言和软件工程原理正在给编译器系统带来越来越多的问题。传统的采用简单编译-链接-执行模型的方法,无法在新的条件要求下提供足够的应用程序性能。传统的程序间和基于概要文件的编译方法可以提供所需的应用程序性能,但需要大量的编译时间来构建应用程序,这在实际中是不可行的。
本文提出LLVM,一种支持独特的多阶段优化系统的编译器基础设施的设计和实现。该系统旨在支持广泛的程序间和基于概要文件的优化,同时具有足够的效率,可用于商业编译器系统。
LLVM虚拟指令集是将系统连接在一起的粘合剂。它是一种低级表示,但具有高级类型信息。这提供了低级表示的优势(紧凑的表示、各种可用的转换等),并提供了高级信息来支持链接时和链接后进行积极的程序间优化。特别是,该系统旨在支持现场优化,包括运行时优化以及机器在空闲时间(否则未使用)期间的优化。
本文还描述了这种编译器设计的实现,即LLVM编译器基础设施,证明了该设计是可行的。LLVM编译器基础设施是一个日趋成熟和高效的系统,我们证明它是一个很好的各种研究的宿主。有关LLVM的更多信息,请访问其网站:http://llvm.cs.uiuc.edu/
本文取代了较旧的技术报告。
"LLVM:多阶段优化的基础设施",Chris Lattner。
硕士论文,伊利诺伊大学厄巴纳-香槟分校计算机科学系,2002年12月。
如果您打算打印此文件,则“书籍格式”非常有用。双面打印文件,对折,然后在页面中间订书。这可以大大减少使用的纸张数量。
@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}.}} }