A mechanically verified code generator
Journal of Automated Reasoning
Generating data flow analysis algorithms from modal specifications
TACS'91 Selected papers of the conference on Theoretical aspects of computer software
Optimal code motion: theory and practice
ACM Transactions on Programming Languages and Systems (TOPLAS)
VLISP: a verified implementation of Scheme
Lisp and Symbolic Computation
The VLISP verified PreScheme compiler
Lisp and Symbolic Computation
TIL: a type-directed optimizing compiler for ML
PLDI '96 Proceedings of the ACM SIGPLAN 1996 conference on Programming language design and implementation
Vortex: an optimizing compiler for object-oriented languages
Proceedings of the 11th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Proceedings of the 24th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Data flow analysis is model checking of abstract interpretations
POPL '98 Proceedings of the 25th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
The design and implementation of a certifying compiler
PLDI '98 Proceedings of the ACM SIGPLAN 1998 conference on Programming language design and implementation
From system F to typed assembly language
ACM Transactions on Programming Languages and Systems (TOPLAS)
Translation validation for an optimizing compiler
PLDI '00 Proceedings of the ACM SIGPLAN 2000 conference on Programming language design and implementation
Simplification by Cooperating Decision Procedures
ACM Transactions on Programming Languages and Systems (TOPLAS)
Global optimization by suppression of partial redundancies
Communications of the ACM
Systematic design of program transformation frameworks by abstract interpretation
POPL '02 Proceedings of the 29th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Composing dataflow analyses and transformations
POPL '02 Proceedings of the 29th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Proving correctness of compiler optimizations by temporal logic
POPL '02 Proceedings of the 29th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Extended static checking for Java
PLDI '02 Proceedings of the ACM SIGPLAN 2002 Conference on Programming language design and implementation
Advice on structuring compilers and proving them correct
POPL '73 Proceedings of the 1st annual ACM SIGACT-SIGPLAN symposium on Principles of programming languages
POPL '77 Proceedings of the 4th ACM SIGACT-SIGPLAN symposium on Principles of programming languages
On the temporal analysis of fairness
POPL '80 Proceedings of the 7th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Systematic design of program analysis frameworks
POPL '79 Proceedings of the 6th ACM SIGACT-SIGPLAN symposium on Principles of programming languages
Data Flow Analysis as Model Checking
TACS '91 Proceedings of the International Conference on Theoretical Aspects of Computer Software
TACAS '98 Proceedings of the 4th International Conference on Tools and Algorithms for Construction and Analysis of Systems
PVS: Combining Specification, Proof Checking, and Model Checking
CAV '96 Proceedings of the 8th International Conference on Computer Aided Verification
Design and Synthesis of Synchronization Skeletons Using Branching-Time Temporal Logic
Logic of Programs, Workshop
Proof Generation in the Touchstone Theorem Prover
CADE-17 Proceedings of the 17th International Conference on Automated Deduction
Static reasoning about programs and queries
PCK50 Proceedings of the Paris C. Kanellakis memorial workshop on Principles of computing & knowledge: Paris C. Kanellakis memorial workshop on the occasion of his 50th birthday
Simple relational correctness proofs for static analyses and program transformations
Proceedings of the 31st ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Incremental execution of transformation specifications
Proceedings of the 31st ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Imperative program optimization by partial evaluation
Proceedings of the 2004 ACM SIGPLAN symposium on Partial evaluation and semantics-based program manipulation
Automated soundness proofs for dataflow analyses and transformations via local rules
Proceedings of the 32nd ACM SIGPLAN-SIGACT symposium on Principles of programming languages
A Model-Based Framework: An Approach for Profit-Driven Optimization
Proceedings of the international symposium on Code generation and optimization
Instrumenting annotated programs
Proceedings of the 1st ACM/USENIX international conference on Virtual execution environments
Proceedings of the 2005 ACM SIGPLAN conference on Programming language design and implementation
Context-sensitive domain-independent algorithm composition and selection
Proceedings of the 2006 ACM SIGPLAN conference on Programming language design and implementation
JunGL: a scripting language for refactoring
Proceedings of the 28th international conference on Software engineering
A type system equivalent to static single assignment
Proceedings of the 8th ACM SIGPLAN international conference on Principles and practice of declarative programming
An approach toward profit-driven optimization
ACM Transactions on Architecture and Code Optimization (TACO)
Extracting a data flow analyser in constructive logic
Theoretical Computer Science - Applied semantics: Selected topics
Automatic inference of optimizer flow functions from semantic meanings
Proceedings of the 2007 ACM SIGPLAN conference on Programming language design and implementation
Using Verified Data-Flow Analysis-based Optimizations in Attribute Grammars
Electronic Notes in Theoretical Computer Science (ENTCS)
Functional Elimination of Φ-instructions
Electronic Notes in Theoretical Computer Science (ENTCS)
Structuring Optimizing Transformations and Proving Them Sound
Electronic Notes in Theoretical Computer Science (ENTCS)
Generating Java Compiler Optimizers Using Bidirectional CTL
Electronic Notes in Theoretical Computer Science (ENTCS)
Design and results of the 2nd annual satisfiability modulo theories competition (SMT-COMP 2006)
Formal Methods in System Design
Proof optimization for partial redundancy elimination
PEPM '08 Proceedings of the 2008 ACM SIGPLAN symposium on Partial evaluation and semantics-based program manipulation
Xoc, an extension-oriented compiler for systems programming
Proceedings of the 13th international conference on Architectural support for programming languages and operating systems
Imperative-program transformation by instrumented-interpreter specialization
Higher-Order and Symbolic Computation
Verifying Design with Proof Scores
Verified Software: Theories, Tools, Experiments
SOFSEM '09 Proceedings of the 35th Conference on Current Trends in Theory and Practice of Computer Science
LCSD '07 Proceedings of the 2007 Symposium on Library-Centric Software Design
Program transformations using temporal logic side conditions
ACM Transactions on Programming Languages and Systems (TOPLAS)
Validation of GCC optimizers through trace generation
Software—Practice & Experience
Reasoning about comprehensions with first-order SMT solvers
Proceedings of the 2009 ACM symposium on Applied Computing
From Specification to Optimisation: An Architecture for Optimisation of Java Bytecode
CC '09 Proceedings of the 18th International Conference on Compiler Construction: Held as Part of the Joint European Conferences on Theory and Practice of Software, ETAPS 2009
A Framework for Exploring Optimization Properties
CC '09 Proceedings of the 18th International Conference on Compiler Construction: Held as Part of the Joint European Conferences on Theory and Practice of Software, ETAPS 2009
Verified validation of lazy code motion
Proceedings of the 2009 ACM SIGPLAN conference on Programming language design and implementation
Proving optimizations correct using parameterized program equivalence
Proceedings of the 2009 ACM SIGPLAN conference on Programming language design and implementation
SAS '09 Proceedings of the 16th International Symposium on Static Analysis
Reusable, generic program analyses and transformations
GPCE '09 Proceedings of the eighth international conference on Generative programming and component engineering
Machine-Checkable Correctness Proofs for Intra-procedural Dataflow Analyses
Electronic Notes in Theoretical Computer Science (ENTCS)
Validating More Loop Optimizations
Electronic Notes in Theoretical Computer Science (ENTCS)
Cobalt: A Language for Writing Provably-Sound Compiler Optimizations
Electronic Notes in Theoretical Computer Science (ENTCS)
Detecting bugs in register allocation
ACM Transactions on Programming Languages and Systems (TOPLAS)
Generic flow-sensitive optimizing transformations in C++ with concepts
Proceedings of the 2010 ACM Symposium on Applied Computing
The semantics of "semantic patches" in Coccinelle: program transformation for the working programmer
APLAS'07 Proceedings of the 5th Asian conference on Programming languages and systems
ViDoC- visual design of optimizing compilers
Program analysis and compilation, theory and practice
The essence of compiling with traces
Proceedings of the 38th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Catching and identifying bugs in register allocation
SAS'06 Proceedings of the 13th international conference on Static Analysis
CC'05 Proceedings of the 14th international conference on Compiler Construction
SMT-COMP: satisfiability modulo theories competition
CAV'05 Proceedings of the 17th international conference on Computer Aided Verification
Verifying local transformations on relaxed memory models
CC'10/ETAPS'10 Proceedings of the 19th joint European conference on Theory and Practice of Software, international conference on Compiler Construction
A formal approach to fixing bugs
SBMF'11 Proceedings of the 14th Brazilian conference on Formal Methods: foundations and Applications
POPL '13 Proceedings of the 40th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Towards modularly comparing programs using automated theorem provers
CADE'13 Proceedings of the 24th international conference on Automated Deduction
Hi-index | 0.00 |
We describe a technique for automatically proving compiler optimizations sound, meaning that their transformations are always semantics-preserving. We first present a domain-specific language, called Cobalt, for implementing optimizations as guarded rewrite rules. Cobalt optimizations operate over a C-like intermediate representation including unstructured control flow, pointers to local variables and dynamically allocated memory, and recursive procedures. Then we describe a technique for automatically proving the soundness of Cobalt optimizations. Our technique requires an automatic theorem prover to discharge a small set of simple, optimization-specific proof obligations for each optimization. We have written a variety of forward and backward intraprocedural dataflow optimizations in Cobalt, including constant propagation and folding, branch folding, full and partial redundancy elimination, full and partial dead assignment elimination, and simple forms of points-to analysis. We implemented our soundness-checking strategy using the Simplify automatic theorem prover, and we have used this implementation to automatically prove our optimizations correct. Our checker found many subtle bugs during the course of developing our optimizations. We also implemented an execution engine for Cobalt optimizations as part of the Whirlwind compiler infrastructure.