-
Notifications
You must be signed in to change notification settings - Fork 9
/
2003-09-30-LifelongOptimizationTR.html
79 lines (71 loc) · 3.25 KB
/
2003-09-30-LifelongOptimizationTR.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<link rel="stylesheet" href="../llvm.css" type="text/css" media="screen" />
<title>LLVM: A Compilation Framework for Lifelong Program Analysis &
Transformation</title>
</head>
<body>
<div class="pub_title">
LLVM: A Compilation Framework for<br>
Lifelong Program Analysis & Transformation
</div>
<div class="pub_author">
<a href="http://www.nondot.org/sabre/">Chris Lattner</a> and
<a href="http://www.cs.uiuc.edu/~vadve">Vikram Adve</a>
</div>
<h2>Abstract:</h2>
<blockquote>
This paper describes LLVM (Low Level Virtual Machine), a compiler framework
designed to support <i>transparent, lifelong program analysis and
transformation</i> for arbitrary programs, by providing high-level information
to compiler transformations at compile-time, link-time, run-time, and offline.
LLVM defines a common, low-level code representation in Static Single Assignment
(SSA) form, with several novel features: a simple, <i>language-independent</i>
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 <tt>setjmp</tt>/<tt>longjmp</tt> 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.
</blockquote>
<h2>Published:</h2>
<blockquote>
"LLVM: A Compilation Framework for Lifelong Program Analysis &
Transformation", Chris Lattner & Vikram Adve<br>
Technical Report #UIUCDCS-R-2003-2380, Computer Science Dept., Univ. of
Illinois, Sep. 2003.
</blockquote>
<p><b>This paper is an early version of the <a
href="2004-01-30-CGO-LLVM.html">paper published in CGO'04</a>, and is
superseded by it.</b></p>
<h2>Download:</h2>
<ul>
<li><a href="2003-09-30-LifelongOptimizationTR.ps">LLVM: A Compilation
Framework for Lifelong Program Analysis & Transformation</a> (PS)</li>
<li><a href="2003-09-30-LifelongOptimizationTR.pdf">LLVM: A Compilation
Framework for Lifelong Program Analysis & Transformation</a>
(PDF)</li>
</ul>
<h2>BibTeX Entry:</h2>
<pre>
@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}
}
</pre>
</body>
</html>