Validating the Translation of an Industrial Optimizing Compiler

The paper presents an approach to the translation validation of an optimizing compiler which translates synchronous C programs into machine code programs. Being synchronous means that both source and target programs are loop free. This enables representation of each of these programs by a single state transformer, and verification of the translation correctness is based on comparison of the source and target state transformers. The approach has been implemented on a tool called MCVT which is also described.

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

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

[3]  Martin Odersky,et al.  Abstract State Machines - Theory and Applications , 2002, Lecture Notes in Computer Science.

[4]  Mandayam K. Srivas,et al.  A Tutorial Introduction to PVS , 1998 .

[5]  Amir Pnueli,et al.  VOC: A Translation Validator for Optimizing Compilers , 2002, COCV@ETAPS.

[6]  William Pugh,et al.  The Omega Library interface guide , 1995 .

[7]  Amir Pnueli,et al.  TVOC: A Translation Validator for Optimizing Compilers , 2005, CAV.

[8]  Thilo S. Gaul,et al.  Practical Construction of Correct Compiler Implementations by Runtime Result Verification , 2000 .

[9]  J. A. Robinson,et al.  A Machine-Oriented Logic Based on the Resolution Principle , 1965, JACM.

[10]  David L. Dill,et al.  CVC: A Cooperating Validity Checker , 2002, CAV.

[11]  Joost-Pieter Katoen,et al.  A probabilistic extension of UML statecharts: Specification and Verification. , 2002 .

[12]  Natarajan Shankar,et al.  ICS: Integrated Canonizer and Solver , 2001, CAV.

[13]  Kai Engelhardt,et al.  Data Refinement: Model-Oriented Proof Methods and their Comparison , 1998 .

[14]  Wolf Zimmermann,et al.  On the Construction of Correct Compiler Back-Ends: An ASM-Approach , 1997, J. Univers. Comput. Sci..

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

[16]  Robin Milner,et al.  On Observing Nondeterminism and Concurrency , 1980, ICALP.

[17]  Amir Pnueli,et al.  The Code Validation Tool (CVT) , 1998, International Journal on Software Tools for Technology Transfer (STTT).

[18]  Egon Börger,et al.  Java and the Java Virtual Machine: Definition, Verification, Validation , 2001 .

[19]  Natarajan Shankar,et al.  Fair Synchronous Transition Systems and Their Liveness Proofs , 1998, FTRTFT.

[20]  Greg Nelson,et al.  Simplification by Cooperating Decision Procedures , 1979, TOPL.

[21]  Gerhard Goos,et al.  Verifying Compilers and ASMs , 2000, Abstract State Machines.

[22]  Gerhard Goos,et al.  Verification of Compilers , 1999, Correct System Design.

[23]  Amir Pnueli,et al.  Translation Validation for Synchronous Languages , 1998, ICALP.

[24]  Amir Pnueli,et al.  A Platform for Combining Deductive with Algorithmic Verification , 1996, CAV.