LLVM: A Compilation Framework for Lifelong Program Analysis & Transformation
International Symposium on Code Generation and Optimization, 2004. CGO 2004., 2004 · paper · Computer science
Describes LLVM, a compiler framework with a typed low-level code representation to support analysis and transformation of programs at compile, link, run and idle time. It is evaluated on representation size, interprocedural compiler performance and illustrative examples.
Checked: PDF from llvm.org, fetched 4 Oct 2026. Page numbers are those of that PDF.
1 finding
Substance Introduction: "Profile-guided optimizers for static languages provide benefit #2 at the cost of transparency, and most crucially do not provide #3"; Section 3.1: "Profile Guided Optimization for static languages provide benefit #3 at the cost of not being transparent". The two statements about capability #3 are opposite.
- p. 2 Section 1, paragraph after the list of five capabilities
static languages provide benefit #2 at the cost of trans-
- p. 2 Section 1, same sentence
and most crucially do not provide #3
- p. 6 Section 3.1, last bullet
vide benefit #3 at the cost of not being transparent
- p. 2 Section 1, paragraph after the list of five capabilities
static languages provide benefit #2 at the cost of trans-parency, and most crucially do not provide #3
Only the authors can say what is right here.
Judge's note: Read both sentences on the page images for pages 2 and 6. The five capabilities are numbered identically in both places (#3 = user-based profiling and optimization), so this is not a renumbering. The other system classes are described consistently between the two sections. The Section 3.1 bullet itself goes on to say PGO training runs may not represent end-user usage, and Section 3.6 (page 7) says traditional profile-guided optimizers, unlike the offline reoptimizer, do not use end-user profiles. Both agree with the Introduction, so '#3' in Section 3.1 is probably the slip (likely '#2'), but only the authors can say.
Second check: another model agreed
Report a problem with this finding
16 minor (typos and the like; most checked by the judge only)
Wording Conclusion: "idle-time optimization using profile information gathered from programmers in the field", whereas the rest of the paper says profile information comes from end-users, not developers.
- p. 11 Section 6, first paragraph
mation gathered from programmers in the field
- p. 5 Section 3.1, first paragraph
represent the end-user’s (not the developer’s) runs
- p. 11 Section 6, first paragraph
idle-time optimization using profile infor-mation gathered from programmers in the field
- p. 1 Section 1, first paragraph
using profile information collected from the end-user
Only the authors can say what is right here.
Judge's note: Page 11 image shows 'gathered from programmers in the field'. Capability #3 on page 2 says profiling is 'in the field so that it is representative of actual users'; Section 3.6 on page 7 says 'profile information gathered from end-user runs'; the same Conclusion paragraph uses 'programmers' for developers ('transparent to programmers'). The word is probably a slip for 'users' or 'programs'; the authors should confirm which.
Second check: another model agreed
Report a problem with this finding
Wording Introduction says the 68% is "across a range of SPECINT 2000 C benchmarks", while Section 4.1.1 says "Table 1 shows this statistic for the C benchmarks in SPEC CPU2000" and Table 1 lists 177.mesa, 179.art, 183.equake and 188.ammp.
- p. 2 Section 1, experimental results paragraph
SPECINT 2000 C benchmarks
- p. 8 Section 4.1.1, text before Table 1
Table 1 shows this statistic for the C benchmarks in
- p. 8 Table 1 rows
177.mesa
- p. 8 Section 4.1.1, text introducing Table 1
Table 1 shows this statistic for the C benchmarks in SPEC CPU2000
Only the authors can say what is right here.
Judge's note: Rests on outside knowledge: that 177.mesa, 179.art, 183.equake and 188.ammp belong to the floating-point part of SPEC CPU2000 and not to SPECint2000. From the files alone: page 2 prints 'SPECINT 2000', page 8 prints 'SPEC CPU2000', and the 68% is the mean of all 15 rows of Table 1 (recomputed as 68.04, matching the printed average). The two labels for the same benchmark set differ; the claim that 'SPECINT' is the wrong one relies on knowledge of the suite.
Second check: another model agreed
Report a problem with this finding
Wording Section 4.1 says "We evaluate three important characteristics of the LLVM representation" (type information, mapping of high-level features, size), but has a fourth subsection "4.1.4 How fast is LLVM?", which covers the speed category that Section 4 lists separately as (b).
- p. 7 Section 4.1, first sentence
We evaluate three important characteristics of the LLVM
- p. 7 Section 4, opening paragraph
(a) the characteristics of the representation; (b) the speed of
- p. 9 Subsection heading
4.1.4 How fast is LLVM?
Judge's note: Page 7: Section 4 lists (a) characteristics of the representation, (b) speed of whole-program analyses, (c) illustrative uses; Section 4.1 announces three questions. Page 9: 4.1.4 on speed sits under 4.1 'Representation Issues', and 4.2 is the applications. The count and structure do not match the announcement, but the authors may regard speed as a property of the representation, and no result is affected.
Second check: another model agreed
Report a problem with this finding
Wording ANDF is expanded two ways: body text (p. 11) "Architecture and language Neutral Distribution Format [4] (ANDF)" versus reference [4] "ANDF Consortium. The Architectural Neutral Distribution Format."
- p. 11 Section 5, paragraph on unified intermediate representations
Architecture and language
- p. 11 Reference [4]
The Architectural Neutral
Only the authors can say what is right here.
Judge's note: Rests on outside knowledge: which expansion of ANDF is the official name cannot be checked from the files. Viewed both crops: the body text and the reference entry do print the name differently. The inconsistency is internal and real, but either form could be a legitimate gloss, so only the authors can say which should stand.
Second check: another model agreed
Report a problem with this finding
Typo "C++ guarantees that the destructor for the Object object will be run": 'Object' is set in code font, but Figure 1 declares "AClass Obj;" and Figure 2 uses %Obj / %AClass.
- p. 4 Section 2.4, paragraph after Figure 1
tees that the destructor for the Object object will be run
- p. 4 Figure 1
AClass Obj;
- p. 4 Section 2.4, text after Figure 1
the destructor for the Object object will be run
- p. 4 Sec 2.4 text after Figure 1
destructor for the Object object will be run
Judge's note: Page 4 image shows 'Object' in monospace like an identifier. No identifier 'Object' appears in Figure 1 or Figure 2; the variable is Obj and the class is AClass. The evident fix is 'Obj'. The meaning is unaffected.
Second check: none (judge only)
Report a problem with this finding
Typo "The runtime handles all of the implementation-specific details, such as allocating memory for exceptions5. Second, the runtime": the enumeration has a 'Second' but no 'First'.
- p. 4 Section 2.4, last paragraph of the page
as allocating memory for exceptions5. Second, the runtime
- p. 4 Section 2.4, discussion of Figure 3
such as allocating memory for exceptions5. Second, the runtime
Judge's note: Page 4 image, last paragraph of the right column. The sentence before 'Second,' is evidently the unlabelled first point and no 'First' appears in the paragraph. The meaning is recoverable, so this is cosmetic.
Second check: none (judge only)
Report a problem with this finding
Typo Figure 2 comment: "; If unwind occurs, excecution continues": 'excecution' should be 'execution'.
- p. 4 Figure 2, comment under ExceptionLabel
; If unwind occurs, excecution continues
- p. 4 Figure 2 code comment
excecution continues
Judge's note: The misspelling is visible in the Figure 2 code listing on the page 4 image.
Second check: none (judge only)
Report a problem with this finding
Typo "exposed in a language-indepenent manner to the optimizer": 'indepenent' should be 'independent'.
- p. 4 Section 2.4, paragraph after Figure 2
a language-indepenent manner to the optimizer
- p. 4 Sec 2.4, para after Fig 2
language-indepenent manner
- p. 4
exposed in a language-indepenent manner to the optimizer
Judge's note: The misspelling is visible on the page 4 image, in the paragraph after Figure 2.
Second check: none (judge only)
Report a problem with this finding
Typo "function try blocks, etc., and reqiring complex semantics": 'reqiring' should be 'requiring'.
- p. 4 Section 2.4, paragraph after Figure 2
ception specifications, function try blocks, etc., and reqiring
- p. 4 Sec 2.4
reqiring
- p. 4
and reqiring complex semantics for the dynamic lifetime
Judge's note: The misspelling is visible on the page 4 image, in the paragraph after Figure 2.
Second check: none (judge only)
Report a problem with this finding
Typo "a low-level represention that permits extensive static optimization": 'represention' should be 'representation'.
- p. 6 Section 3.1, Omniware sentence in the virtual-machines bullet
a low-level represention that permits extensive static
- p. 6 Omniware bullet, Sec 3.1
low-level represention
- p. 6
low-level represention that permits extensive static
Judge's note: The misspelling is visible on the page 6 image, in the Omniware sentence at the top of the left column.
Second check: none (judge only)
Report a problem with this finding
Typo "Although that work is outside the scope if this paper": 'if' should be 'of'.
- p. 7 Section 3.5, first paragraph
Although that work is outside the scope if this paper
- p. 7 Sec 3.5
outside the scope if this paper
Judge's note: Visible on the page 7 image, Section 3.5, first paragraph.
Second check: none (judge only)
Report a problem with this finding
Typo "Several transformations in LLVM are based on DSA, including Automatic Pool Allocation [30]).": the closing parenthesis has no matching opening parenthesis.
- p. 8 Section 4.1.1, second paragraph
DSA, including Automatic Pool Allocation [30]).
- p. 8 Section 4.1.1, second paragraph
including Automatic Pool Allocation [30]).
- p. 8 Sec 4.1.1
Automatic Pool Allocation [30]).
Judge's note: The page 8 image shows the stray ')' after [30]. The earlier '(DSA)' is closed on its own and the sentence has no other open parenthesis.
Second check: none (judge only)
Report a problem with this finding
Typo Reference [12] misspells 'Implementation': "In ACM Symp. on Prog. Lang. Design and Implemenation, Atlanta, GA, May 1999."
- p. 12 Reference [12]
on Prog. Lang. Design and Implemenation
- p. 12 Reference [12]
Design and Implemenation
- p. 12 Refs [33], [12]
Commmon Language Infrastructure
Judge's note: The crop of reference [12] on p. 12 clearly shows 'Implemenation' with the 't' missing; the text layer agrees. The 'Commmon' misspelling also mentioned in this cluster belongs to reference [33] and is judged under C018.
Second check: none (judge only)
Report a problem with this finding
Typo Reference [33] misspells 'Common' with three m's: "A technical overview of the Commmon Language Infrastructure, 2002."
- p. 12 Reference [33]
Commmon Language Infrastructure
- p. 12
Commmon Language Infrastructure, 2002.
Judge's note: The crop of reference [33] on p. 12 shows 'Commmon' with three m's; the text layer agrees.
Second check: none (judge only)
Report a problem with this finding
Typo Reference [15] puts the word 'pages' before a volume(issue):pages string: "Trans. Prog. Lang. and Sys., pages 13(4):451–490, October 1991."
- p. 12 Reference [15]
pages 13(4):451–490
Judge's note: The crop of reference [15] shows the stray 'pages' before '13(4):451–490'. Other journal entries visible in the crops, e.g. [35] '21(3):528–569' and [5] '33(5):301–312', use volume(issue):pages without the word. A bibliography formatting slip; the citation data themselves are not affected.
Second check: none (judge only)
Report a problem with this finding
Typo Reference [39] has a stray space splitting 'Champaign': "Univ. of Illinois at Urbana-Champ aign, Urbana, IL, Aug 2003."
- p. 12 Reference [39]
Univ. of Illinois at Urbana-Champ aign
Judge's note: The crop of reference [39] shows a visible full-width gap in 'Urbana-Champ aign', and the text layer also has the space. Reference [31], seen in another crop, prints 'Urbana-Champaign' with no gap, so this is not a font or kerning effect.
Second check: none (judge only)