A Structured Approach to Proving Compiler Optimizations Based on Dataflow Analysis

  • Yves Bertot
  • Benjamin Grégoire
  • Xavier Leroy
Part of the Lecture Notes in Computer Science book series (LNCS, volume 3839)


This paper reports on the correctness proof of compiler optimizations based on data-flow analysis. We formulate the optimizations and analyses as instances of a general framework for data-flow analyses and transformations, and prove that the optimizations preserve the behavior of the compiled programs. This development is a part of a larger effort of certifying an optimizing compiler by proving semantic equivalence between source and compiled code.


Proof Obligation Correctness Proof Symbolic Expression Program Point Register Allocation 
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.


Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.


  1. 1.
    Cachera, D., Jensen, T., Pichardie, D., Rusu, V.: Extracting a data flow analyser in constructive logic. In: Schmidt, D. (ed.) ESOP 2004. LNCS, vol. 2986, pp. 385–400. Springer, Heidelberg (2004)CrossRefGoogle Scholar
  2. 2.
    Kildall, G.A.: A unified approach to global program optimization. In: 1st symposium on Principles of Programming Languages, pp. 194–206. ACM Press, New York (1973)Google Scholar
  3. 3.
    Klein, G., Nipkow, T.: Verified bytecode verifiers. Theoretical Computer Science 298(3), 583–626 (2002)CrossRefMathSciNetGoogle Scholar
  4. 4.
    Lerner, S., Millstein, T., Rice, E., Chambers, C.: Automated soundness proofs for dataflow analyses and transformations via local rules. In: 32nd symposium on Principles of Programming Languages, pp. 364–377. ACM Press, New York (2005)Google Scholar
  5. 5.
    Morrisett, G., Walker, D., Crary, K., Glew, N.: From system F to typed assembly language. ACM Transactions on Programming Languages and Systems 21(3), 528–569 (1999)CrossRefGoogle Scholar
  6. 6.
    Necula, G.C.: Proof-carrying code. In: 24th symposium Principles of Programming Languages, pp. 106–119. ACM Press, New York (1997)CrossRefGoogle Scholar
  7. 7.
    Pnueli, A., Siegel, M., Singerman, E.: Translation validation. In: Steffen, B. (ed.) TACAS 1998. LNCS, vol. 1384, pp. 151–166. Springer, Heidelberg (1998)CrossRefGoogle Scholar
  8. 8.
    Rinard, M.: Credible compilation. Technical Report MIT-LCS-TR-776, MIT (1999)Google Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 2006

Authors and Affiliations

  • Yves Bertot
    • 1
  • Benjamin Grégoire
    • 2
  • Xavier Leroy
    • 3
  1. 1.Projet MARELLEINRIA Sophia-AntipolisFrance
  2. 2.Projet EVERESTINRIA Sophia-AntipolisFrance
  3. 3.Projet CRISTALINRIA RocquencourtFrance

Personalised recommendations