TY - JOUR
T1 - Practical verification of peephole optimizations with alive
AU - Lopes, Nuno P.
AU - Menendez, David
AU - Nagarakatte, Santosh
AU - Regehr, John
N1 - Publisher Copyright: © 2018 ACM.
PY - 2018/2
Y1 - 2018/2
N2 - Compilers should not miscompile. Peephole optimizations, which perform local rewriting of the input program to improve the efficiency of generated code, are a persistent source of compiler bugs. We created Alive, a domain-specific language for writing optimizations and for automatically either proving them correct or else generating counterexamples. Furthermore, Alive can be automatically translated into C++ code that is suitable for inclusion in an LLVM optimization pass. Alive is based on an attempt to balance usability and formal methods; for example, it captures-but largely hides-The detailed semantics of the various kinds of undefined behavior. Alive has found numerous bugs in the LLVM compiler and is being used by LLVM developers.
AB - Compilers should not miscompile. Peephole optimizations, which perform local rewriting of the input program to improve the efficiency of generated code, are a persistent source of compiler bugs. We created Alive, a domain-specific language for writing optimizations and for automatically either proving them correct or else generating counterexamples. Furthermore, Alive can be automatically translated into C++ code that is suitable for inclusion in an LLVM optimization pass. Alive is based on an attempt to balance usability and formal methods; for example, it captures-but largely hides-The detailed semantics of the various kinds of undefined behavior. Alive has found numerous bugs in the LLVM compiler and is being used by LLVM developers.
UR - http://www.scopus.com/inward/record.url?scp=85041467987&partnerID=8YFLogxK
UR - http://www.scopus.com/inward/citedby.url?scp=85041467987&partnerID=8YFLogxK
U2 - https://doi.org/10.1145/3166064
DO - https://doi.org/10.1145/3166064
M3 - Article
SN - 0001-0782
VL - 61
SP - 84
EP - 91
JO - Communications of the ACM
JF - Communications of the ACM
IS - 2
ER -