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

  • Authors:
  • Chris Hawblitzel;Shuvendu K. Lahiri;Kshama Pawar;Hammad Hashmi;Sedar Gokbulut;Lakshan Fernando;Dave Detlefs;Scott Wadsworth

  • Affiliations:
  • Microsoft, USA;Microsoft, USA;Microsoft, USA;Microsoft, USA;Microsoft, USA;Microsoft, USA;Microsoft, USA;Microsoft, USA

  • Venue:
  • Proceedings of the 2013 9th Joint Meeting on Foundations of Software Engineering
  • Year:
  • 2013

Quantified Score

Hi-index 0.00

Visualization

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.