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
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
Verified validation of lazy code motion
Proceedings of the 2009 ACM SIGPLAN conference on Programming language design and implementation
A simple, verified validator for software pipelining
Proceedings of the 37th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Evaluating value-graph translation validation for LLVM
Proceedings of the 32nd ACM SIGPLAN conference on Programming language design and implementation
A formal approach to fixing bugs
SBMF'11 Proceedings of the 14th Brazilian conference on Formal Methods: foundations and Applications
Frankenstein: stitching malware from benign binaries
WOOT'12 Proceedings of the 6th USENIX conference on Offensive Technologies
Hi-index | 0.00 |
An optimization can be specified as sequential compositions of predefined transformation primitives. For each primitive, we can define soundness conditions which guarantee that the transformation is semantics preserving. An optimization of a program preserves semantics, if all applications of the primitives in the optimization satisfy their respective soundness conditions on the versions of the input program on which they are applied. This scheme does not directly check semantic equivalence of the input and the optimized programs and is therefore amenable to automation. Automating this scheme however requires a trusted framework for simulating transformation primitives and checking their soundness conditions. In this paper, we present the design of such a framework based on PVS. We have used it for specifying and validating several optimizations viz. common subexpression elimination, optimal code placement, lazy code motion, loop invariant code motion, full and partial dead code elimination, etc.