Compilers: principles, techniques, and tools
Compilers: principles, techniques, and tools
A portable global optimizer and linker
PLDI '88 Proceedings of the ACM SIGPLAN 1988 conference on Programming Language design and Implementation
Predicate calculus and program semantics
Predicate calculus and program semantics
A mechanically verified language implementation
Journal of Automated Reasoning
Identifying the semantic and textual differences between two versions of a program
PLDI '90 Proceedings of the ACM SIGPLAN 1990 conference on Programming language design and implementation
A visualization system for parallelizing programs
Proceedings of the 1992 ACM/IEEE conference on Supercomputing
Isolation and analysis of optimization errors
PLDI '93 Proceedings of the ACM SIGPLAN 1993 conference on Programming language design and implementation
Automatic isolation of compiler errors
ACM Transactions on Programming Languages and Systems (TOPLAS)
Chains of recurrences—a method to expedite the evaluation of closed-form functions
ISSAC '94 Proceedings of the international symposium on Symbolic and algebraic computation
VLISP: a verified implementation of Scheme
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
CTADEL: a generator of multi-platform high performance codes for PDE-based scientific applications
ICS '96 Proceedings of the 10th international conference on Supercomputing
Proceedings of the 24th 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
Translation validation for an optimizing compiler
PLDI '00 Proceedings of the ACM SIGPLAN 2000 conference on Programming language design and implementation
An axiomatic basis for computer programming
Communications of the ACM
Advice on structuring compilers and proving them correct
POPL '73 Proceedings of the 1st annual ACM SIGACT-SIGPLAN symposium on Principles of programming languages
VISTA: a system for interactive code improvement
Proceedings of the joint conference on Languages, compilers and tools for embedded systems: software and compilers for embedded systems
Principles of Verifiable RTL Design
Principles of Verifiable RTL Design
A Complete Transformational Toolkit for Compilers
ESOP '96 Proceedings of the 6th European Symposium on Programming Languages and Systems
More on advice on structuring compilers and proving them correct
Semantics-Directed Compiler Generation, Proceedings of a Workshop
A Provably Correct Embedded Verifier for the Certification of Safety Critical Software
CAV '97 Proceedings of the 9th International Conference on Computer Aided Verification
Capturing the Effects of Code Improving Transformations
PACT '98 Proceedings of the 1998 International Conference on Parallel Architectures and Compilation Techniques
IWIA '01 Proceedings of the Innovative Architecture for Future Generation High-Performance Processors and Systems (IWIA'01)
Validation of code-improving transformations for embeded systems
Proceedings of the 2003 ACM symposium on Applied computing
On approximate matching of programs for protecting libre software
CASCON '06 Proceedings of the 2006 conference of the Center for Advanced Studies on Collaborative research
Hi-index | 0.00 |
This paper presents a general approach for automatically validating code-improving transformations on low-level program representations. The approach ensures the correctness of compiler and hand-specified optimizations at the machine instruction level. The method verifies the semantic equivalence of the program representation before and after a transformation to determine the validity of the transformation. To verify that the transformation is semantics preserving, the method derives semantic effects from the instructions that span the execution paths affected by the transformation. The semantics are preserved if the normalized semantic effects are unchanged. A validating compilation system was implemented that is able to validate traditional compiler transformations and more powerful transformations that modify the branch structure of a program.