TY - JOUR
T1 - Specifying and executing optimizations for generalized control flow graphs
AU - Mansky, William
AU - Gunter, Elsa L.
AU - Griffith, Dennis
AU - Adams, Michael D.
N1 - This material is based upon work supported in part by NSF Grant CCF 13-18191 . Any opinions, findings, and conclusions or recommendations expressed in this material are those of the authors and do not necessarily reflect the views of the NSF.
PY - 2016/11/15
Y1 - 2016/11/15
N2 - Optimizations performed by compilers, usually expressed as rewrites on program graphs, are a core part of modern compilers. However, even production compilers have bugs, and these bugs are difficult to detect and resolve. In this paper we present Morpheus, a domain-specific language for formal specification of program transformations, and describe its executable semantics. The fundamental approach of Morpheus is to describe program transformations as rewrites on control flow graphs with temporal logic side conditions. The syntax of Morpheus allows cleaner, more comprehensible specifications of program optimizations; its executable semantics allows these specifications to act as prototypes for the optimizations themselves, so that candidate optimizations can be tested and refined before going on to include them in a compiler. We demonstrate the use of Morpheus to state, test, and refine the specification of a variety of transformations, including a simple loop peeling transformation for single-threaded code and a redundant store elimination optimization on parallel programs.
AB - Optimizations performed by compilers, usually expressed as rewrites on program graphs, are a core part of modern compilers. However, even production compilers have bugs, and these bugs are difficult to detect and resolve. In this paper we present Morpheus, a domain-specific language for formal specification of program transformations, and describe its executable semantics. The fundamental approach of Morpheus is to describe program transformations as rewrites on control flow graphs with temporal logic side conditions. The syntax of Morpheus allows cleaner, more comprehensible specifications of program optimizations; its executable semantics allows these specifications to act as prototypes for the optimizations themselves, so that candidate optimizations can be tested and refined before going on to include them in a compiler. We demonstrate the use of Morpheus to state, test, and refine the specification of a variety of transformations, including a simple loop peeling transformation for single-threaded code and a redundant store elimination optimization on parallel programs.
KW - Optimizing compilers
KW - Program transformations
KW - SMT solvers
KW - Temporal logic
UR - https://www.scopus.com/pages/publications/84991111305
UR - https://www.scopus.com/pages/publications/84991111305#tab=citedBy
U2 - 10.1016/j.scico.2016.06.003
DO - 10.1016/j.scico.2016.06.003
M3 - Article
AN - SCOPUS:84991111305
SN - 0167-6423
VL - 130
SP - 2
EP - 23
JO - Science of Computer Programming
JF - Science of Computer Programming
ER -