Formal verification of SSA-based optimizations for LLVM

  • Authors:
  • Jianzhou Zhao;Santosh Nagarakatte;Milo M.K. Martin;Steve Zdancewic

  • Affiliations:
  • University of Pennsylvania, Philadelphia, Pennsylvania, USA;Rutgers University, New Brunswick, New Jersey, USA;University of Pennsylvania, Philadelphia, Pennsylvania, USA;University of Pennsylvania, Philadelphia, Pennsylvania, USA

  • Venue:
  • Proceedings of the 34th ACM SIGPLAN conference on Programming language design and implementation
  • Year:
  • 2013

Quantified Score

Hi-index 0.00

Visualization

Abstract

Modern compilers, such as LLVM and GCC, use a static single assignment(SSA) intermediate representation (IR) to simplify and enable many advanced optimizations. However, formally verifying the correctness of SSA-based optimizations is challenging because SSA properties depend on a function's entire control-flow graph. This paper addresses this challenge by developing a proof technique for proving SSA-based program invariants and compiler optimizations. We use this technique in the Coq proof assistant to create mechanized correctness proofs of several "micro" transformations that form the building blocks for larger SSA optimizations. To demonstrate the utility of this approach, we formally verify a variant of LLVM's mem2reg transformation in Vellvm, a Coq-based formal semantics of the LLVM IR. The extracted implementation generates code with performance comparable to that of LLVM's unverified implementation.