Many classical compiler optimizations can be elegantly expressed using rewrite rules of form: I ⇒ I′ if φ, where I, I′ are intermediate language instructions and φ is a property expressed in a temporal logic suitable for describing program data flow. Its reading: If the current program π contains an instruction of form I at some control point p, and if flow condition φ is satisfied at p, then replace I by I′. The purpose of this paper is to show how such transformations may be proven correct. Our methodology is illustrated by three familiar optimizations, dead code elimination, constant folding and code motion. The meaning of correctness is that for any program π, if Rewrite(π, π′, p, I ⇒ I′ if φ) then [π] = [π′], i.e. π and π′ have exactly...
Software developers, compiler designers, and formal methods researchers all stand to benefit from im...
Compilers transform programs, either to optimize performance or to translate language-level construc...
Compilers for higher-order programming languages like Scheme, ML, and Lisp can be broadly characteri...
Many classical compiler optimizations can be elegantly ex-pressed using rewrite rules of form: I = ⇒...
Associated research group: Minnesota Extensible Language ToolsMany classical compiler optimizations ...
Rewrite rules with side conditions can elegantly express many classical compiler optimizations for i...
AbstractIn this paper, global compiler optimizations are captured by conditional rewrite rules of th...
Abstract. In this article, we describe a framework for formally verify-ing the correctness of compil...
AbstractA compiler optimization is sound if the optimized program that it produces is semantically e...
We describe a technique for automatically proving compiler optimizations sound, meaning that their t...
An efficient optimizing compiler can perform many cascading rewrites in a single pass, using auxilia...
While program correctness for compiled languages depends fundamentally on compiler correctness, comp...
This paper describes an approach to program optimisation based on transformations, where temporal lo...
Model checking based on validating temporal logic formulas has proven practical and effective for n...
Abstract. Writing performance-critical programs can be frustrating because optimizing compilers for ...
Software developers, compiler designers, and formal methods researchers all stand to benefit from im...
Compilers transform programs, either to optimize performance or to translate language-level construc...
Compilers for higher-order programming languages like Scheme, ML, and Lisp can be broadly characteri...
Many classical compiler optimizations can be elegantly ex-pressed using rewrite rules of form: I = ⇒...
Associated research group: Minnesota Extensible Language ToolsMany classical compiler optimizations ...
Rewrite rules with side conditions can elegantly express many classical compiler optimizations for i...
AbstractIn this paper, global compiler optimizations are captured by conditional rewrite rules of th...
Abstract. In this article, we describe a framework for formally verify-ing the correctness of compil...
AbstractA compiler optimization is sound if the optimized program that it produces is semantically e...
We describe a technique for automatically proving compiler optimizations sound, meaning that their t...
An efficient optimizing compiler can perform many cascading rewrites in a single pass, using auxilia...
While program correctness for compiled languages depends fundamentally on compiler correctness, comp...
This paper describes an approach to program optimisation based on transformations, where temporal lo...
Model checking based on validating temporal logic formulas has proven practical and effective for n...
Abstract. Writing performance-critical programs can be frustrating because optimizing compilers for ...
Software developers, compiler designers, and formal methods researchers all stand to benefit from im...
Compilers transform programs, either to optimize performance or to translate language-level construc...
Compilers for higher-order programming languages like Scheme, ML, and Lisp can be broadly characteri...