kirancodes.me
To Proof Maintenance & Beyond!

Will you still compile me tomorrow? static cross-version compiler validation

Chris Hawblitzel, Shuvendu K. Lahiri, Kshama Pawar, Hammad Hashmi, Sedar Gokbulut, Lakshan Fernando, Dave Detlefs, Scott Wadsworth

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},
}

Related papers