Formal verification of SSA-based optimizations for LLVM

J Zhao, S Nagarakatte, MMK Martin… - Proceedings of the 34th …, 2013 - dl.acm.org
Proceedings of the 34th ACM SIGPLAN conference on Programming language …, 2013dl.acm.org
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 …
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.
ACM Digital Library
以上显示的是最相近的搜索结果。 查看全部搜索结果