Validating More Loop Optimizations

Translation validation is a technique for ensuring that a translator, such as a compiler, produces correct results. Because complete verification of the translator itself is often infeasible, translation validation advocates coupling the verification task with the translation task, so that each run of the translator produces verification conditions which, if valid, prove the correctness of the translation. In previous work, the translation validation approach was used to give a framework for proving the correctness of a variety of compiler optimizations, with a recent focus on loop transformations. However, some of these ideas were preliminary and had not been implemented. Additionally, there were examples of common loop transformations which could not be handled by our previous approaches. This paper addresses these issues. We introduce a new rule Reduce for loop reduction transformations, and we generalize our previous rule Validate so that it can handle more transformations involving loops. We then describe how all of this (including some previous theoretical work) is implemented in our compiler validation tool TVOC.

[1]  George C. Necula,et al.  The design and implementation of a certifying compiler , 1998, PLDI.

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

[3]  Sorin Lerner,et al.  Automatically proving the correctness of compiler optimizations , 2003, PLDI '03.

[4]  Rajiv Gupta,et al.  Debugging and Testing Optimizers through Comparison Checking , 2002, COCV@ETAPS.

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

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

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

[8]  David Detlefs,et al.  Simplify: a theorem prover for program checking , 2005, JACM.

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

[10]  Ernst-Rüdiger Olderog,et al.  Correct System Design, Recent Insight and Advances, (to Hans Langmaack on the occasion of his retirement from his professorship at the University of Kiel) , 1999 .

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

[12]  George C. Necula,et al.  Proof-carrying code , 1997, POPL '97.

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

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

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