Finding Basic Block and Variable Correspondence

Having in mind the ultimate goal of translation validation for optimizing compilers, we propose a new algorithm for solving the problem of finding basic block and variable correspondence between two (low-level) programs generated by a compiler from the same source using different optimizations. The essence of our technique is interpretation of the two programs on random inputs and comparing the histories of value changes for variables. We describe an architecture of a system for finding basic block and variable correspondence and provide experimental evidence of its usefulness.

[1]  Xavier Leroy,et al.  Proceedings of the 31st ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, POPL 2004, Venice, Italy, January 14-16, 2004 , 2004, POPL.

[2]  Sumit Gulwani,et al.  Global value numbering using random interpretation , 2004, POPL '04.

[3]  Ernesto Pimentel,et al.  Isolating Resource Consumption in Linear Logic Proof Search , 2002, Electron. Notes Theor. Comput. Sci..

[4]  M.L. Soffa,et al.  Capturing the effects of code improving transformations , 1998, Proceedings. 1998 International Conference on Parallel Architectures and Compilation Techniques (Cat. No.98EX192).

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

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

[7]  Simon L. Peyton Jones,et al.  Imperative functional programming , 1993, POPL '93.

[8]  Xavier Rival,et al.  Symbolic transfer function-based approaches to certified compilation , 2004, POPL.

[9]  Amir Pnueli,et al.  Translation and Run-Time Validation of Optimized Code , 2002, RV@FLoC.

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

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

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

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

[14]  David B. Whalley,et al.  Automatic Validation of Code-Improving Transformations , 2000, LCTES.