Will you still compile me tomorrow? static cross-version compiler validation
Abstract
This paper describes a cross-version compiler validator and measures its effectiveness on the CLR JIT compiler. The validator checks for semantically equivalent assembly language output from various versions of the compiler, including versions across a seven-month time period, across two architectures (x86 and ARM), across two compilation scenarios (JIT and MDIL), and across optimizations levels. For month-to-month comparisons, the validator achieves a false alarm rate of just 2.2%. To help understand reported semantic differences, the validator performs a root-cause analysis on the counterexample traces generated by the underlying automated theorem proving tools. This root-cause analysis groups most of the counterexamples into a small number of buckets, reducing the number of counterexamples analyzed by hand by anywhere from 53% to 96%. The validator ran on over 500,000 methods across a large suite of test programs, finding 12 previously unknown correctness and performance bugs in the CLR compiler.
BibTeX
@inproceedings{Hawblitzel-al:FSE13,
author = {Chris Hawblitzel and
Shuvendu K. Lahiri and
Kshama Pawar and
Hammad Hashmi and
Sedar Gokbulut and
Lakshan Fernando and
Dave Detlefs and
Scott Wadsworth},
title = {Will you still compile me tomorrow? static cross-version compiler validation},
booktitle = {{ESEC/SIGSOFT} {FSE}},
pages = {191--201},
publisher = {{ACM}},
year = {2013},
}