While program correctness for compiled languages depends fundamentally on compiler correctness, compiler optimizations are not usually formally verified due to the effort involved, particularly in the presence of concurrency. In this paper, we present a framework for stating and reasoning about compiler optimizations and transformations on programs in the presence of relaxed memory models. The core of the framework is the PTRANS specification language, in which program transformations are expressed as rewrites on control flow graphs with temporal logic side conditions. We demonstrate our technique by verifying the correctness of a redundant store elimination optimization in a simple LLVM-like intermediate language, relying on a theorem that...
Abstract. Writing performance-critical programs can be frustrating because optimizing compilers for ...
International audienceThis paper presents a technique for representing the high level semantics of p...
Many classical compiler optimizations can be elegantly expressed using rewrite rules of form: I ⇒ I′...
Software developers, compiler designers, and formal methods researchers all stand to benefit from im...
Software developers, compiler designers, and formal methods researchers all stand to benefit from im...
Compiler optimizations, usually expressed as rewrites on program graphs, are a core part of all mod-...
The VeriF-OPT project seeks to provide a framework for stating and reasoning about compiler optimiza...
Abstract. In this article, we describe a framework for formally verify-ing the correctness of compil...
Compilers transform programs, either to optimize performance or to translate language-level construc...
Rewrite rules with side conditions can elegantly express many classical compiler optimizations for i...
Associated research group: Minnesota Extensible Language ToolsMany classical compiler optimizations ...
AbstractA compiler optimization is sound if the optimized program that it produces is semantically e...
In this paper we describe the usage of temporal logic and model checking in a parallelizing compiler...
We describe a technique for automatically proving compiler optimizations sound, meaning that their t...
Shared memory concurrency is the pervasive programming model for multicore architectures such as x8...
Abstract. Writing performance-critical programs can be frustrating because optimizing compilers for ...
International audienceThis paper presents a technique for representing the high level semantics of p...
Many classical compiler optimizations can be elegantly expressed using rewrite rules of form: I ⇒ I′...
Software developers, compiler designers, and formal methods researchers all stand to benefit from im...
Software developers, compiler designers, and formal methods researchers all stand to benefit from im...
Compiler optimizations, usually expressed as rewrites on program graphs, are a core part of all mod-...
The VeriF-OPT project seeks to provide a framework for stating and reasoning about compiler optimiza...
Abstract. In this article, we describe a framework for formally verify-ing the correctness of compil...
Compilers transform programs, either to optimize performance or to translate language-level construc...
Rewrite rules with side conditions can elegantly express many classical compiler optimizations for i...
Associated research group: Minnesota Extensible Language ToolsMany classical compiler optimizations ...
AbstractA compiler optimization is sound if the optimized program that it produces is semantically e...
In this paper we describe the usage of temporal logic and model checking in a parallelizing compiler...
We describe a technique for automatically proving compiler optimizations sound, meaning that their t...
Shared memory concurrency is the pervasive programming model for multicore architectures such as x8...
Abstract. Writing performance-critical programs can be frustrating because optimizing compilers for ...
International audienceThis paper presents a technique for representing the high level semantics of p...
Many classical compiler optimizations can be elegantly expressed using rewrite rules of form: I ⇒ I′...