Verification

LANCE permits plug-and-play integration of new IR transformation and optimization passes. Naturally, such new passes need to be extensively verified. LANCE supports verification of any IR transformation by means of its executable IR format, without the need for a compiler backend or an instruction set simulator. This is achieved with the methodology illustrated below: Both an original reference IR code of a test application and the IR code generated from it by a new transformation are compiled with a native C compiler (CC) for the development host. The resulting binaries are checked for equivalence by execution for a set of test input data. Deviations in the outputs indicate bugs in the new IR transformation.