Rating is available when the video has been rented.
This feature is not available right now. Please try again later.
Published on Jan 9, 2017
Workshop on Software Correctness and Reliability 2016
We describe equivalence modulo inputs (EMI), a general methodology for validating optimizing compilers. The key insight is toexploit the close interplay between (1) dynamically executing a exploit the close interplay between (1) dynamically executing a program on some test input and (2) statically compiling the program to work on all possible input. Indeed, the test input induces a natural collection of the original program's EMI variants, which help test any compiler and specifically target the difficult-to-find miscompilations.
We have developed a series of gradually sophisticated techniques to generate EMI variants by (1) profiling a program's test executions, and (2) stochastically deleting/inserting/mutating code. Our extensive testing to date has led to 1000+ confirmed bug reports for GCC and LLVM alone, of which 600+ have already been fixed. The EMI concept is widely applicable --- beyond testing compilers, it can be adapted to validate program transformations and analyses, and software in general.