A verifiable SSA program representation for aggressive compiler optimization

VS Menon, N Glew, BR Murphy, A McCreight… - Conference record of …, 2006 - dl.acm.org
VS Menon, N Glew, BR Murphy, A McCreight, T Shpeisman, AR Adl-Tabatabai, L Petersen
Conference record of the 33rd ACM SIGPLAN-SIGACT symposium on Principles of …, 2006dl.acm.org
We present a verifiable low-level program representation to embed, propagate, and
preserve safety information in high perfor-mance compilers for safe languages such as Java
and C#. Our representation precisely encodes safety information via static single-
assignment (SSA)[11, 3] proof variables that are first-class constructs in the program. We
argue that our representation allows a compiler to both (1) express aggressively optimized
machine-independent code and (2) leverage existing compiler infrastructure to preserve …
We present a verifiable low-level program representation to embed, propagate, and preserve safety information in high perfor-mance compilers for safe languages such as Java and C#. Our representation precisely encodes safety information via static single-assignment (SSA) [11, 3] proof variables that are first-class constructs in the program.We argue that our representation allows a compiler to both (1) express aggressively optimized machine-independent code and (2) leverage existing compiler infrastructure to preserve safety information during optimization. We demonstrate that this approach supports standard compiler optimizations, requires minimal changes to the implementation of those optimizations, and does not artificially impede those optimizations to preserve safety. We also describe a simple type system that formalizes type safety in an SSA-style control-flow graph program representation. Through the types of proof variables, our system enables compositional verification of memory safety in optimized code. Finally, we discuss experiences integrating this representation into the machine-independent global optimizer of STARJIT, a high-performance just-in-time compiler that performs aggressive control-flow, data-flow, and algebraic optimizations and is competitive with top production systems.
ACM Digital Library