本論文は、任意のプログラムに対して、コンパイル時、リンク時、実行時、および実行間におけるアイドルの時間での高レベル情報をコンパイラ変換に提供する「ライフロングプログラム分析およびトランスフォーメーションの透過的なサポート」するように設計されたLLVM(低レベル仮想マシン)コンパイラフレームワークについて説明する。LLVMは、Static Single Assignment(SSA)形式の共通低レベルコード表現を定義し、いくつかの新しい機能を備えている: 高レベル言語機能を実装するために一般的に使用されるプリミティブを公開する、シンプルで言語に依存しない型システム; 型指定アドレス算術のための命令; 高レベル言語(およびsetjmp/longjmpCの)の例外処理機能を均一かつ効率的に実装するために使用できるシンプルなメカニズムLLVMコンパイラフレームワークとコード表現を組み合わせることで、プログラムの実際的な生涯分析と変換に不可欠な主要な機能が提供される。我々の知る限り、現時点でのコンパイル手法でこれらすべての機能を提供しているものは存在しない。LLVM表現とコンパイラフレームワークの設計について説明し、その設計は次の3つの方法で評価される: (a)それが提供する型情報を含む表現のサイズと有効性; (b)複数のプロシージャ間問題に関するコンパイラの性能; (c)複数の困難なコンパイラ問題に対するLLVMの利点の例を示す。
この論文は以前の技術報告書に取って代わることに注意する。
「ライフロングプログラム分析と変換のためのコンパイルフレームワーク: LLVM」、クリス・ラットナーとヴィクラム・アドヴェ。
2004 年のコード生成および最適化(CGO‘04)国際シンポジウムの議事録、カリフォルニア州パロアルト、2004 年 3 月。
@InProceedings{LLVM:CGO04, author = {Chris Lattner and Vikram Adve}, title = "{LLVM: A Compilation Framework for Lifelong Program Analysis \& Transformation}", booktitle = "{Proceedings of the 2004 International Symposium on Code Generation and Optimization (CGO'04)}", address = {Palo Alto, California}, month = {Mar}, year = {2004} }