Formal verification of SSA-based optimizations for LLVM
2013; Association for Computing Machinery; Volume: 48; Issue: 6 Linguagem: Inglês
10.1145/2499370.2462164
ISSN1558-1160
AutoresYun Zhao, Santosh Nagarakatte, Milo M. K. Martin, Steve Zdancewic,
Tópico(s)Formal Methods in Verification
ResumoModern 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.
Referência(s)