Detecting equality of variables in programs
POPL '88 Proceedings of the 15th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Efficiently computing static single assignment form and the control dependence graph
ACM Transactions on Programming Languages and Systems (TOPLAS)
PLDI '92 Proceedings of the ACM SIGPLAN 1992 conference on Programming language design and implementation
Single-pass generation of static single-assignment form for structured languages
ACM Transactions on Programming Languages and Systems (TOPLAS)
Software—Practice & Experience
A new algorithm for partial redundancy elimination based on SSA form
Proceedings of the ACM SIGPLAN 1997 conference on Programming language design and implementation
ACM SIGPLAN Notices
Practical improvements to the construction and destruction of static single assignment form
Software—Practice & Experience
Translation validation for an optimizing compiler
PLDI '00 Proceedings of the ACM SIGPLAN 2000 conference on Programming language design and implementation
A fast algorithm for finding dominators in a flowgraph
ACM Transactions on Programming Languages and Systems (TOPLAS)
Modern Compiler Implementation: In ML
Modern Compiler Implementation: In ML
TACAS '98 Proceedings of the 4th International Conference on Tools and Algorithms for Construction and Analysis of Systems
Translating Out of Static Single Assignment Form
SAS '99 Proceedings of the 6th International Symposium on Static Analysis
Basic-Block Graphs: Living Dinosaurs?
CC '98 Proceedings of the 7th International Conference on Compiler Construction
Simple Generation of Static Single-Assignment Form
CC '00 Proceedings of the 9th International Conference on Compiler Construction
Automatically proving the correctness of translations involving optimized code.
Automatically proving the correctness of translations involving optimized code.
A verifiable SSA program representation for aggressive compiler optimization
Conference record of the 33rd ACM SIGPLAN-SIGACT symposium on Principles of programming languages
A type system equivalent to static single assignment
Proceedings of the 8th ACM SIGPLAN international conference on Principles and practice of declarative programming
Advances in static single assignment form and register allocation
Advances in static single assignment form and register allocation
Fast liveness checking for ssa-form programs
Proceedings of the 6th annual IEEE/ACM international symposium on Code generation and optimization
Tilting at Windmills with Coq: Formal Verification of a Compilation Algorithm for Parallel Moves
Journal of Automated Reasoning
Parametric higher-order abstract syntax for mechanized semantics
Proceedings of the 13th ACM SIGPLAN international conference on Functional programming
Equality saturation: a new approach to optimization
Proceedings of the 36th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Verified validation of lazy code motion
Proceedings of the 2009 ACM SIGPLAN conference on Programming language design and implementation
Revisiting Out-of-SSA Translation for Correctness, Code Quality and Efficiency
Proceedings of the 7th annual IEEE/ACM International Symposium on Code Generation and Optimization
A Formally Verified Compiler Back-end
Journal of Automated Reasoning
Electronic Notes in Theoretical Computer Science (ENTCS)
A simple, verified validator for software pipelining
Proceedings of the 37th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
A verified compiler for an impure functional language
Proceedings of the 37th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Mechanized verification of CPS transformations
LPAR'07 Proceedings of the 14th international conference on Logic for programming, artificial intelligence and reasoning
Evaluating value-graph translation validation for LLVM
Proceedings of the 32nd ACM SIGPLAN conference on Programming language design and implementation
Equality-based translation validator for LLVM
CAV'11 Proceedings of the 23rd international conference on Computer aided verification
Formalizing the LLVM intermediate representation for verified program transformations
POPL '12 Proceedings of the 39th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
A framework for formal verification of compiler optimizations
ITP'10 Proceedings of the First international conference on Interactive Theorem Proving
Register allocation for programs in SSA-Form
CC'06 Proceedings of the 15th international conference on Compiler Construction
A formally verified SSA-Based middle-end: Static single assignment meets compcert
ESOP'12 Proceedings of the 21st European conference on Programming Languages and Systems
Mechanized verification of computing dominators for formalizing compilers
CPP'12 Proceedings of the Second international conference on Certified Programs and Proofs
Formal verification of SSA-based optimizations for LLVM
Proceedings of the 34th ACM SIGPLAN conference on Programming language design and implementation
Hi-index | 0.00 |
CompCert is a formally verified compiler that generates compact and efficient code for a large subset of the C language. However, CompCert foregoes using SSA, an intermediate representation employed by many compilers that enables writing simpler, faster optimizers. In fact, it has remained an open problem to verify formally an SSA-based compiler. We report on a formally verified, SSA-based middle-end for CompCert. In addition to providing a formally verified SSA-based middle-end, we address two problems raised by Leroy in [2009]: giving an intuitive formal semantics to SSA, and leveraging its global properties to reason locally about program optimizations.