CoVaC
CoVaC: compiler validation by program analysis of the cross-product. The paper presents a deductive framework for proving program equivalence and its application to automatic verification of transformations performed by optimizing compilers. To leverage existing program analysis techniques, we reduce the equivalence checking problem to analysis of one system – a cross-product of the two input programs. We show how the approach can be effectively used for checking equivalence of consonant (i.e., structurally similar) programs. Finally, we report on the prototype tool that applies the developed methodology to verify that a compiler optimization run preserves the program semantics. Unlike existing frameworks, CoVaC accommodates absence of compiler annotations and handles most of the classical intraprocedural optimizations such as constant folding, reassociation, common subexpression elimination, code motion, dead code elimination, branch optimizations, and others.
Keywords for this software
References in zbMATH (referenced in 7 articles )
Showing results 1 to 7 of 7.
Sorted by year (- Kiefer, Moritz; Klebanov, Vladimir; Ulbrich, Mattias: Relational program reasoning using compiler IR (2018)
- Wood, Tim; Drossopolou, Sophia; Lahiri, Shuvendu K.; Eisenbach, Susan: Modular verification of procedure equivalence in the presence of memory allocation (2017)
- Barthe, Gilles; Crespo, Juan Manuel; Kunz, César: Product programs and relational program logics (2016)
- Barthe, Gilles; Crespo, Juan Manuel; Kunz, César: Beyond 2-safety: asymmetric product programs for relational program verification (2013)
- Beringer, Lennart: Relational bytecode correlations (2010)
- Voronkov, Andrei; Narasamdya, Iman: Inter-program properties (2009)
- Zaks, Anna; Pnueli, Amir: CoVaC: Compiler validation by program analysis of the cross-product (2008) ioport