TVOC: A Translation Validator for Optimizing Compilers

We describe a tool called TVOC, that uses the translation validation approach to check the validity of compiler optimizations: for a given source program, TVOC proves the equivalence of the source code and the target code produced by running the compiler. There are two phases to the verification process: the first phase verifies loop transformations using the proof rule permute; the second phase verifies structure-preserving optimizations using the proof rule Validate. Verification conditions are validated using the automatic theorem prover CVC Lite.

[1]  Henk Corporaal,et al.  Making graphs reducible with controlled node splitting , 1997, TOPL.

[2]  Bowen Alpern,et al.  Detecting equality of variables in programs , 1988, POPL '88.

[3]  Rajeev Alur,et al.  A Temporal Logic of Nested Calls and Returns , 2004, TACAS.

[4]  Mark N. Wegman,et al.  Efficiently computing static single assignment form and the control dependence graph , 1991, TOPL.

[5]  Sabine Glesner,et al.  Verified Code Generation for Embedded Systems , 2002, COCV@ETAPS.

[6]  Mark N. Wegman,et al.  Constant propagation with conditional branches , 1985, POPL.

[7]  David A. Schmidt,et al.  Program Analysis as Model Checking of Abstract Interpretations , 1998, SAS.

[8]  Alfred V. Aho,et al.  Compilers: Principles, Techniques, and Tools , 1986, Addison-Wesley series in computer science / World student series edition.

[9]  Mark N. Wegman,et al.  An efficient method of computing static single assignment form , 1989, POPL '89.

[10]  Robert W. Floyd,et al.  Assigning Meanings to Programs , 1993 .

[11]  Ken Kennedy,et al.  Optimizing Compilers for Modern Architectures: A Dependence-based Approach , 2001 .

[12]  Sergey Berezin,et al.  CVC Lite: A New Implementation of the Cooperating Validity Checker Category B , 2004, CAV.

[13]  James R. Larus,et al.  Detecting conflicts between structure accesses , 1988, PLDI '88.

[14]  Deborah S. Coutant Retargetable high-level alias analysis , 1986, POPL '86.

[15]  Benjamin Goldberg,et al.  Into the Loops: Practical Issues in Translation Validation for Optimizing Compilers , 2005, COCV@ETAPS.

[16]  Amir Pnueli,et al.  VOC: A Methodology for the Translation Validation of OptimizingCompilers , 2003, J. Univers. Comput. Sci..

[17]  Eric Van Wyk,et al.  Compiler Optimization Correctness by Temporal Logic , 2004, High. Order Symb. Comput..

[18]  Amir Pnueli,et al.  Translation and Run-Time Validation of Loop Transformations , 2005, Formal Methods Syst. Des..

[19]  Michael Hind,et al.  Pointer analysis: haven't we solved this problem yet? , 2001, PASTE '01.

[20]  Amir Pnueli,et al.  Validating More Loop Optimizations , 2005, COCV@ETAPS.

[21]  Frank Tip,et al.  A survey of program slicing techniques , 1994, J. Program. Lang..

[22]  Bjarne Steensgaard,et al.  Points-to analysis in almost linear time , 1996, POPL '96.

[23]  George C. Necula,et al.  Translation validation for an optimizing compiler , 2000, PLDI '00.

[24]  Amir Pnueli,et al.  Translation Validation , 1998, TACAS.

[25]  Lars Ole Andersen,et al.  Program Analysis and Specialization for the C Programming Language , 2005 .

[26]  Allen,et al.  Optimizing Compilers for Modern Architectures , 2004 .

[27]  Martin Rinard,et al.  Credible Compilation with Pointers , 1999 .