SSA Translation Is an Abstract Interpretation
The work
| Authors | Matthieu Lemerre |
|---|---|
| Editors | |
| Type | article |
| Year | 2023 |
| Citekey | lemerre2023ssa |
Where it appeared
| Published in | Proceedings of the ACM on Programming Languages |
|---|---|
| Publisher | Association for Computing Machinery (ACM) |
| Volume | 7 |
| Issue | POPL |
| Pages | 1895--1924 |
Identifiers
| DOI | 10.1145/3571258 |
|---|---|
| ISSN | 2475-1421 |
Access
| Landing page | https://doi.org/10.1145/3571258 |
|---|
From crossref.
Abstract
Static single assignment (SSA) form is a popular intermediate representation that helps implement useful static analyses, including global value numbering (GVN), sparse dataflow analyses, or SMT-based abstract interpretation or model checking. However, the precision of the SSA translation itself depends on static analyses, and a priori static analysis is even indispensable in the case of low-level input languages like machine code. To solve this chicken-and-egg problem, we propose to turn the SSA translation into a standard static analysis based on abstract interpretation. This allows the SSA translation to be combined with other static analyses in a single pass, taking advantage of the fact that it is more precise to combine analyses than applying passes in sequence. We illustrate the practicality of these results by writing a simple dataflow analysis that performs SSA translation, optimistic global value numbering, sparse conditional constant propagation, and loop-invariant code motion in a single small pass; and by presenting a multi-language static analyzer for both C and machine code that uses the SSA abstract domain as its main intermediate representation.
How it got here
| How it got here | agent via crossref |
|---|---|
| Added | 2026-10-26 15:27 UTC |
| Not denied by | a person 2026-10-29 17:12 UTC |
Cite it as
@article{lemerre2023ssa,
title = {SSA Translation Is an Abstract Interpretation},
author = {Matthieu Lemerre},
year = {2023},
journal = {Proceedings of the ACM on Programming Languages},
publisher = {Association for Computing Machinery (ACM)},
volume = {7},
number = {POPL},
pages = {1895--1924},
issn = {2475-1421},
doi = {10.1145/3571258},
}
This record lives at https://refs.drheap.org/lemerre2023ssa/ and will keep doing so.