skip to main content
10.1145/2491411.2491442acmconferencesArticle/Chapter ViewAbstractPublication PagesfseConference Proceedingsconference-collections
research-article

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

Published:18 August 2013Publication History

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.

References

  1. M. Barnett, B.-Y. E. Chang, R. DeLine, B. Jacobs, and K. R. M. Leino. Boogie: A modular reusable verifier for object-oriented programs. In Formal Methods for Components and Objects (FMCO), volume 4111, 2006. Google ScholarGoogle ScholarDigital LibraryDigital Library
  2. A. Bessey, K. Block, B. Chelf, A. Chou, B. Fulton, S. Hallem, C. Henri-Gros, A. Kamsky, S. McPeak, and D. Engler. A few billion lines of code later: using static analysis to find bugs in the real world. In Communications of the ACM, Feb. 2010. Google ScholarGoogle ScholarDigital LibraryDigital Library
  3. J. Chen, C. Hawblitzel, F. Perry, M. Emmi, J. Condit, D. Coetzee, and P. Pratikakis. Type-preserving compilation for large-scale optimizing object-oriented compilers. SIGPLAN Not., 43(6):183–192, 2008. Google ScholarGoogle ScholarDigital LibraryDigital Library
  4. L. M. de Moura and N. Bjørner. Z3: An efficient SMT solver. In TACAS, pages 337–340, 2008.Google ScholarGoogle ScholarDigital LibraryDigital Library
  5. C. Hawblitzel and E. Petrank. Automated verification of practical garbage collectors. In POPL, pages 441–453, 2009. Google ScholarGoogle ScholarDigital LibraryDigital Library
  6. M. Jose and R. Majumdar. Cause clue clauses: Error localization using maximum satisfiability. In PLDI, 2011. Google ScholarGoogle ScholarDigital LibraryDigital Library
  7. S. K. Lahiri, C. Hawblitzel, M. Kawaguchi, and H. Rebˆ elo. Symdiff: A language-agnostic semantic diff tool for imperative programs. In Computer Aided Verification (CAV ˇ S12), 2012. Google ScholarGoogle ScholarDigital LibraryDigital Library
  8. X. Leroy. Formal certification of a compiler back-end or: programming a compiler with a proof assistant. In Principles of Programming Languages (POPL ’06), pages 42–54, 2006. Google ScholarGoogle ScholarDigital LibraryDigital Library
  9. G. C. Necula. Translation validation for an optimizing compiler. In Programming Language Design and Implementation (PLDI ’00), pages 83–94, 2000. Google ScholarGoogle ScholarDigital LibraryDigital Library
  10. A. Pardoe. Clr inside out: Program silverlight with the coreclr. In MSDN Magazine, Aug. 2008.Google ScholarGoogle Scholar
  11. A. Pnueli, M. Siegel, and E. Singerman. Translation validation. In Tools and Algorithms for Construction and Analysis of Systems (TACAS ’98), pages 151–166, 1998. Google ScholarGoogle ScholarDigital LibraryDigital Library
  12. S. Ramaswamy. Deep dive into the kernel of .NET on Windows Phone 8. In Build Conference, Nov. 2012.Google ScholarGoogle Scholar
  13. D. Ramos and D. Engler. Practical, low-effort equivalence verification of real code. In CAV, 2011. Google ScholarGoogle ScholarDigital LibraryDigital Library
  14. M. Stepp, R. Tate, and S. Lerner. Equality-based translation validator for llvm. In CAV, 2011. Google ScholarGoogle ScholarDigital LibraryDigital Library
  15. R. Tate, M. Stepp, Z. Tatlock, and S. Lerner. Equality saturation: a new approach to optimization. In Principles of Programming Languages (POPL ’09), pages 264–276, 2009. Google ScholarGoogle ScholarDigital LibraryDigital Library
  16. J. Tristan, P. Govereau, and G. Morrisett. Evaluating value-graph translation validation for llvm. In Programming Language Design and Implementation (PLDI ’11), pages 295–305, 2011. Google ScholarGoogle ScholarDigital LibraryDigital Library
  17. X. Yang, Y. Chen, E. Eide, and J. Regehr. Finding and understanding bugs in c compilers. In PLDI. ACM Press, 2011. Google ScholarGoogle ScholarDigital LibraryDigital Library
  18. J. Zhao, S. Zdancewic, S. Nagarakatte, and M. M. K. Martin. Formalizing the llvm intermediate representation for verified program transformation. In POPL, 2012. Google ScholarGoogle ScholarDigital LibraryDigital Library

Index Terms

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

            Recommendations

            Comments

            Login options

            Check if you have access through your login credentials or your institution to get full access on this article.

            Sign in
            • Published in

              cover image ACM Conferences
              ESEC/FSE 2013: Proceedings of the 2013 9th Joint Meeting on Foundations of Software Engineering
              August 2013
              738 pages
              ISBN:9781450322379
              DOI:10.1145/2491411

              Copyright © 2013 ACM

              Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than the author(s) must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from [email protected].

              Publisher

              Association for Computing Machinery

              New York, NY, United States

              Publication History

              • Published: 18 August 2013

              Permissions

              Request permissions about this article.

              Request Permissions

              Check for updates

              Qualifiers

              • research-article

              Acceptance Rates

              Overall Acceptance Rate112of543submissions,21%

              Upcoming Conference

              FSE '24

            PDF Format

            View or Download as a PDF file.

            PDF

            eReader

            View online with eReader.

            eReader