Student or educator? Sign up with your school email and get 6 months of Pro free.
Cited by 2,681

The DOI matches its Crossref record.

LLVM: a compilation framework for lifelong program analysis & transformation

Lattner, C., Adve, V.·2004·International Symposium on Code Generation and Optimization, 2004. CGO 2004.

Abstract

We describe LLVM (low level virtual machine), a compiler framework designed to support transparent, lifelong program analysis and transformation for arbitrary programs, by providing high-level information to compiler transformations at compile-time, link-time, run-time, and in idle time between runs. LLVM defines a common, low-level code representation in static single assignment (SSA) form, with several novel features: a simple, language-independent 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 setjmp/longjmp 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.

Overview

The claims and statistics of this paper haven’t been checked yet.

Run the check — free, no account needed. It reads the open-access text and checks the sources it cites.

A few free checks a day · papers already verified open instantly · results are public

Integrity signals

Registry

Crossref · 10.1109/cgo.2004.1281665

Cites

Statistics

Verification

Claims the paper makes

The claims and statistics of this paper haven’t been checked yet.

Run the check — free, no account needed. It reads the open-access text and checks the sources it cites.

A few free checks a day · papers already verified open instantly · results are public

Self-check

Percentages, sums and reported differences re-computed from the paper’s own numbers.

The self-check needs the paper’s full text.

Citations

Cites

No references could be resolved yet.

Research works printed but not linked: 44

  1. 10.1145/780732.780743 · DOI
  2. 10.1145/378795.378811 · DOI
  3. 10.1145/319301.319345 · DOI · Paper page
  4. 10.1145/800017.800542 · DOI
  5. muth, 1999, Alto A platform for object code modification
  6. 10.1145/115372.115320 · DOI · Paper page
  7. meijer, 2002, A Technical Overview of the Commmon Language Infrastructure
  8. dehnert, 2003, The transmeta code morphing software: Using speculation, recovery and adaptive retranslation to address real-life challenges, 2nd IEEE/ACM Symp Code Generation and Optimization
  9. 0, Managed extensions for c++ specification, NET Framework Compiler and Language Reference
  10. shukla, 2003, Lightweight Cross-procedure Tracing for Runtime Optimization
  11. 2001, C++ ABI for Itanium
  12. cohn, 1997, Optimizing Alpha executables on Windows NT with Spike, Digital Technical Journal, 9
  13. romer, 1997, Instrumentation and optimization of Win32/Intel executables using Etch, Proc USENIX Windows NT Workshop
  14. 10.1109/40.671403 · DOI
  15. 10.1145/289423.289460 · DOI
  16. 10.1145/301618.301635 · DOI
  17. 10.1145/223428.207121 · DOI
  18. 10.1109/ISCA.1997.604517 · DOI
  19. 10.1145/38765.38828 · DOI
  20. 10.1016/S0066-4138(61)80014-1 · DOI
  21. srivastava, 1992, A practical system for intermodule code optimization at link-time, Journal of Programming Languages, 1, 1
  22. 10.1109/IWIA.1998.779076 · DOI
  23. 10.1145/12276.13338 · DOI
  24. 10.1145/265563.265576 · DOI
  25. 10.1145/512529.512563 · DOI
  26. 10.1145/781131.781150 · DOI
  27. 10.1145/347324.348916 · DOI
  28. 2000, XL FORTRAN: Eight ways to boost performance, White Paper
  29. 10.1145/778559.778562 · DOI
  30. 10.1145/581630.581678 · DOI
  31. lattner, 0, LLVM Language Reference Manual
  32. 10.1145/378795.378825 · DOI
  33. 10.1109/MICRO.2003.1253196 · DOI
  34. 10.1145/231379.231402 · DOI
  35. 10.1145/781131.781155 · DOI
  36. lattner, 2002, Automatic pool allocation for disjoint data structures, Proc ACM SIGPLAN Workshop on Memory System Performance, 10.1145/773146.773041 · DOI
  37. 10.1145/169683.169678 · DOI
  38. 10.1145/349299.349303 · DOI
  39. lindholm, 1997, The Java Virtual Machine Specification
  40. 10.1145/277652.277745 · DOI
  41. lattner, 2003, Data structure analysis: A fast and scalable context-sensitive heap analysis, Tech Report
  42. 0, The Architectural Neutral Distribution Format
  43. chase, 1994, Implementation of exception handling, J C Language Transl, 5, 229
  44. 10.1145/304065.304113 · DOI

Cited by

See all 2,681

Metadata

Authors
Lattner, C., & Adve, V.
Venue
International Symposium on Code Generation and Optimization, 2004. CGO 2004.
Publisher
IEEE
Published
2004-01-01
Pages
75-86
OpenAlex
W4246166885
Cited by
2,681
References
0
FWCI
6.29
Type
conference paper
Language
en
Open access
closed

About these checks

Registry, retraction, Cites and statistics results are computed, not judged, with one exception: a printed reference that no index lists is read once by a model before it counts as a citation error. Claims are extracted by a model and kept only when their quote appears verbatim in the text; each cited source is then checked, with a model’s help, for whether it says what the claim relies on. Those verdicts can be wrong — read the claim’s quote and the cited source before relying on one.

Statistics and arithmetic are recomputed, not judged.

Confidence bands are shown only for fields calibrated on our annotated test set. None is calibrated yet, so no band is shown.

What counts as a claim ›How we measure confidence ›How we check this ›

Are you an author, or do you see a problem with this page? Request a review

How to cite

Cite CoChat for the checks on this page, and the paper for its own findings.

This page
CoChat. (2026). Citation check: LLVM: a compilation framework for lifelong program analysis & transformation. https://app.cochat.ai/papers/10.1109/cgo.2004.1281665
The paper
Lattner, C., & Adve, V. (2004). LLVM: a compilation framework for lifelong program analysis & transformation. International Symposium on Code Generation and Optimization, 2004. CGO 2004. https://doi.org/10.1109/cgo.2004.1281665

Data sources

Bibliographic data: Semantic Scholar, OpenAlex, Crossref.

Contains information from the Semantic Scholar Academic Graph Datasets, made available under the ODC Attribution License (ODC-BY 1.0).

Semantic Scholar’s data is described in: Kinney, R., et al. (2023). The Semantic Scholar Open Data Platform. arXiv:2301.10140.