Affiliation:
1. Université Paris-Saclay - CEA LIST, Palaiseau, France
Abstract
Rewriting and static analyses are mutually beneficial techniques: program
transformations change the intensional aspects of the program, and can thus
improve analysis precision, while some efficient transformations are enabled by specific
knowledge of some program invariants. Despite the strong interaction between
these techniques, they are usually considered distinct. In this paper, we
demonstrate that we can turn abstract interpreters into compilers, using a
simple free algebra over the standard signature of abstract domains. Functor
domains correspond to compiler passes, for which soundness is translated to a
proof of forward simulation, and completeness to backward simulation.
We achieve translation to SSA using an abstract domain with a non-standard
SSA signature. Incorporating such an SSA translation to an abstract
interpreter improves its precision; in particular we show that an
SSA-based non-relational domain is always more precise than a standard
non-relational domain for similar time and memory complexity.
Moreover, such a domain allows recovering from precision losses that occur when analyzing low-level
machine code instead of source code. These results help implement analyses or
compilation passes where symbolic and semantic methods simultaneously refine
each other, and improves precision when compared to doing the passes in sequence.
Funder
Agence Nationale de la Recherche
Publisher
Association for Computing Machinery (ACM)
Cited by
1 articles.
订阅此论文施引文献
订阅此论文施引文献,注册后可以免费订阅5篇论文的施引文献,订阅后可以查看论文全部施引文献