Skip to main content

Mechanized Verification of Computing Dominators for Formalizing Compilers

  • Conference paper

Part of the Lecture Notes in Computer Science book series (LNTCS,volume 7679)

Abstract

One prerequisite to the formal verification of modern compilers is to formalize computing dominators, which enable SSA forms, advanced optimizations, and analysis. This paper provides an abstract specification of dominance analysis that is sufficient for formalizing modern compilers; it describes a certified implementation and instance of the specification that is simple to design and reason about, and also reasonably efficient. The paper also presents applications of dominance analysis: an SSA-form type checker, verifying SSA-based optimizations, and constructing dominator trees. This development is a part of the Vellvm project. All proofs and implementation have been carried out in Coq.

Keywords

  • Dominator Tree
  • Type Checker
  • Dominance Analysis
  • Tree Construction Algorithm
  • Unvisited Node

These keywords were added by machine and not by the authors. This process is experimental and the keywords may be updated as the learning algorithm improves.

This is a preview of subscription content, access via your institution.

Buying options

Chapter
USD   29.95
Price excludes VAT (Canada)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
eBook
USD   39.99
Price excludes VAT (Canada)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
Softcover Book
USD   54.99
Price excludes VAT (Canada)
  • Compact, lightweight edition
  • Dispatched in 3 to 5 business days
  • Free shipping worldwide - see info

Tax calculation will be finalised at checkout

Purchases are for personal use only

Learn about institutional subscriptions

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

References

  1. Allen, F.E., Cocke, J.: Graph theoretic constructs for program control flow analysis. Technical report, IBM T.J. Watson Research Center (1972)

    Google Scholar 

  2. Appel, A.W.: Modern Compiler Implementation in C: Basic Techniques. Cambridge University Press (1997)

    Google Scholar 

  3. Barthe, G., Demange, D., Pichardie, D.: A Formally Verified SSA-Based Middle-End. In: Seidl, H. (ed.)ESOP 2012. LNCS, vol. 7211, pp. 47–66. Springer, Heidelberg (2012)

    CrossRef  Google Scholar 

  4. Bertot, Y., Castéran, P.: Interactive Theorem Proving and Program Development. Coq’Art: The Calculus of Inductive Constructions (2004)

    Google Scholar 

  5. Cooper, K.D., Harvey, T.J., Kennedy, K.: A simple, fast dominance algorithm (2000), www.cs.rice.edu/~keith/Embed/dom.pdf

  6. Cytron, R., Ferrante, J., Rosen, B.K., Wegman, M.N., Zadeck, F.K.: Efficiently computing static single assignment form and the control dependence graph. ACM Trans. Program. Lang. Syst. 13, 451–490 (1991)

    CrossRef  Google Scholar 

  7. Georgiadis, L., Tarjan, R.E.: Dominator tree verification and vertex-disjoint paths. In: SODA 2005, pp. 433–442 (2005)

    Google Scholar 

  8. Georgiadis, L., Werneck, R.F., Tarjan, R.E., August, D.I.: Finding Dominators in Practice. In: Albers, S., Radzik, T. (eds.) ESA 2004. LNCS, vol. 3221, pp. 677–688. Springer, Heidelberg (2004)

    CrossRef  Google Scholar 

  9. Kam, J.B., Ullman, J.D.: Global data flow analysis and iterative algorithms. J. ACM 23(1), 158–171 (1976)

    CrossRef  MathSciNet  MATH  Google Scholar 

  10. Kildall, G.A.: A unified approach to global program optimization. In: POPL 1973, pp. 194–206 (1973)

    Google Scholar 

  11. Lengauer, T., Tarjan, R.E.: A fast algorithm for finding dominators in a flowgraph. ACM Trans. Program. Lang. Syst. 1, 121–141 (1979)

    CrossRef  MATH  Google Scholar 

  12. Leroy, X.: A formally verified compiler back-end. Journal of Automated Reasoning 43(4), 363–446 (2009)

    CrossRef  MathSciNet  MATH  Google Scholar 

  13. Ramalingam, G.: On loops, dominators, and dominance frontiers. ACM Trans. Program. Lang. Syst. 24(5), 455–490 (2002)

    CrossRef  Google Scholar 

  14. Zhao, J., Nagarakatte, S., Martin, M.M.K., Zdancewic, S.: Formalizing the LLVM intermediate representation for verified program transformations. In: POPL 2012 (2012)

    Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Editor information

Editors and Affiliations

Rights and permissions

Reprints and Permissions

Copyright information

© 2012 Springer-Verlag Berlin Heidelberg

About this paper

Cite this paper

Zhao, J., Zdancewic, S. (2012). Mechanized Verification of Computing Dominators for Formalizing Compilers. In: Hawblitzel, C., Miller, D. (eds) Certified Programs and Proofs. CPP 2012. Lecture Notes in Computer Science, vol 7679. Springer, Berlin, Heidelberg. https://doi.org/10.1007/978-3-642-35308-6_6

Download citation

  • DOI: https://doi.org/10.1007/978-3-642-35308-6_6

  • Publisher Name: Springer, Berlin, Heidelberg

  • Print ISBN: 978-3-642-35307-9

  • Online ISBN: 978-3-642-35308-6

  • eBook Packages: Computer ScienceComputer Science (R0)