Advertisement

On the Correctness of Transformations in Compiler Back-Ends

  • Wolf Zimmermann
Part of the Lecture Notes in Computer Science book series (LNCS, volume 4313)

Abstract

This paper summarizes the results on the correctness of the transformations in compiler back-ends achieved in the DFG-project Verifix. Compiler back-ends transform intermediate languages into code of the target machine. Back-end generators allow to generate compiler back-ends from a set of transformation rules. This paper focuses on the correctness of these transformation rules and on the correctness of the whole transformation stemming from the transformation rules.

Keywords

Transformation Rule Basic Block Target Language Observable Behaviour Program Transformation 
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.

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

References

  1. 1.
    Assmann, U.: Graph rewrite systems for program optimization. ACM Transactions on Programming Languages and Systems 22(4), 583–637 (2000)CrossRefGoogle Scholar
  2. 2.
    Barrett, C., Goldberg, B., Zuck, L.: Run-time validation of speculative optimizations using CVC. Electronic Notes in Theoretical Computer Science 89(2) (2003)Google Scholar
  3. 3.
    Blech, J.O., Gesellensetter, L., Glesner, S.: Formal verification of dead code elimination in Isabelle/HOL. In: 3rd IEEE International Conference on Software Engineering and Formal Methods. IEEE Computer Society Press, Los Alamitos (to appear, 2005)Google Scholar
  4. 4.
    Blech, J.O., Glesner, S.: A formal correctness proof for code generation from SSA form in Isabelle/HOL. In: Informatik 2004, Proceedings der 3. Arbeitstagung Programmiersprachen (ATPS) auf der 34. Jahrestagung der Gesellschaft für Informatik. Lecture Notes in Informatics, vol. P-51, pp. 449–458. Springer, Heidelberg (2004)Google Scholar
  5. 5.
    Blech, J.O., Glesner, S., Leitner, J., Mlling, S.: Optimizing code generation from SSA form: A comparison between two formal correctness proofs in Isabelle/HOL. In: Proceedings of the 4th COCV-Workshop (Compiler Optimization meets Compiler Verification). Electronic Notes in Theoretical Computer Science (to appear, 2005)Google Scholar
  6. 6.
    Brger, E., Durdanovic, I.: Correctness of compiling occam to transputer. The Computer Journal 39(1), 52–92 (1996)CrossRefGoogle Scholar
  7. 7.
    Brger, E., Durdanovic, I., Rosenzweig, D.: Occam: Specification and Compiler Correctness.Part I: The Primary Model. In: Montanari, U., Olderog, E.-R. (eds.) Proc. Procomet 1994 (IFIP TC2 Working Conference on Programming Concepts, Methods and Calculi). North-Holland, Amsterdam (1994)Google Scholar
  8. 8.
    Brown, D.F., Moura, H., Watt, D.A.: Actress: an action semantics directed compiler generator. In: Pfahler, P., Kastens, U. (eds.) CC 1992. LNCS, vol. 641. Springer, Heidelberg (1992)Google Scholar
  9. 9.
    Buth, B., Buth, K.-H., Fränzle, M., Karger, B., Lakhneche, Y., Langmaack, H., Müller-Olm, M.: Provably correct compiler development and implementation. In: Pfahler, P., Kastens, U. (eds.) CC 1992. LNCS, vol. 641. Springer, Heidelberg (1992)Google Scholar
  10. 10.
    Colby, C., Lee, P., Necula, G.C., Blau, F., Plesko, M., Cline, K.: A certifying compiler for Java. In: Proceedings of the ACM SIGPLAN 2000 conference on Programming language design and implementation, pp. 95–107. ACM Press, New York (2000)CrossRefGoogle Scholar
  11. 11.
    Diehl, S.: Semantics-Directed Generation of Compilers and Abstract Machines. PhD thesis, Universität Saarbrücken (1996)Google Scholar
  12. 12.
    Dold, A., von Henke, F.W., Goerigk, W.: A completely verified realistic bootstrap compiler. International Journal on Foundations of Computer Science 14(4), 659–680 (2003)MATHCrossRefMathSciNetGoogle Scholar
  13. 13.
    Emmelmann, H.: Codeselektion mit regulär gesteuerter Termersetzung. PhD thesis, Universität Karlsruhe, Fakultät für Informatik, GMD-Bericht 241, Oldenbourg, Cambridge (1994)Google Scholar
  14. 14.
    Emmelmann, H., Schröer, F.-W., Landwehr, R.: BEG – a Generator for Efficient Back Ends. In: Proceedings of the Sigplan 1989 Conference on Programming Language Design and Implementation (June 1989)Google Scholar
  15. 15.
    Gaul, T., Heberle, A., Zimmermann, W., Goerigk, W.: Construction of verified software systems with program-checking: An application to compiler back-ends. In: Pnueli, A., Traverso, P. (eds.) Proceedings of RTRV 1999: Workshop on Runtime Result Verification, Trento, Italy (1999)Google Scholar
  16. 16.
    Gaul, T.S.: An Abstract State Machine Specification of the DEC-Alpha Processor Family. In: Verifix Working Paper [Verifix/UKA/4], University of Karlsruhe (1995)Google Scholar
  17. 17.
    Glesner, S.: Using program checking to ensure correctness of compiler implementations. Journal of Universal Computer Science 9(3), 191–222 (2003); Special Issue on Compiler Optimization meets Compiler Verification Google Scholar
  18. 18.
    Glesner, S., Blech, J.-O.: Classifying and formally verifying. In: 2nd Workshop on Compiler Optimization meets Compiler Verification COCV 2003. Electronic Notes in Theoretical Computer Science, vol. 82 (2003)Google Scholar
  19. 19.
    Glesner, S., Forster, S., Jäger, M.: A program result checker for the lexical analysis of the gnu c compiler. In: 3rd International Workshop on Compiler Optimization meets Compiler Verification COCV 2004. Electronic Notes in Theoretical Computer Science (2004)Google Scholar
  20. 20.
    Glesner, S., Geiß, R., Bösler, B.: Verified code generation for embedded systems. In: Workshop on Compiler Optimization meets Compiler Verification COCV 2002. Electronic Notes in Theoretical Computer Science, vol. 65 (2002)Google Scholar
  21. 21.
    Glesner, S., Goos, G., Zimmermann, W.: Verifix: Konstruktion und Architektur verifizierender bersetzer. IT – Information Technology 46(5), 265–276 (2004)CrossRefGoogle Scholar
  22. 22.
    Glesner, S., Zimmermann, W.: Structural Simulation Proofs based on ASMs even for Non-Terminating Programs. In: Moreno-Díaz Jr., R., Buchberger, B., Freire, J.-L. (eds.) EUROCAST 2001. LNCS, vol. 2178. Springer, Heidelberg (2001)Google Scholar
  23. 23.
    Goldberg, B., Zuck, L., Barrett, C.: Practical issues in translation validation for optimizing compilers. Electronic Notes in Theoretical Computer Science 132(1) (2005)Google Scholar
  24. 24.
    Goos, G., Zimmermann, W.: Verification of compilers. In: Olderog, E.-R., Steffen, B. (eds.) Correct System Design. LNCS, vol. 1710, pp. 201–230. Springer, Heidelberg (1999)CrossRefGoogle Scholar
  25. 25.
    Gurevich, Y.: Evolving algebras 1993: Lipari guide. In: Brger, E. (ed.) Specification and Validation Methods, pp. 9–36. Oxford University Press, Oxford (1995)Google Scholar
  26. 26.
    Gurevich, Y.: May 1997 Draft of the ASM Guide. Technical Report CSE-TR-336-97, University of Michigan EECS Department (1997)Google Scholar
  27. 27.
    Hoare, C.A.R., Jifeng, H., Sampaio, A.: Normal Form Approach to Compiler Design. Acta Informatica 30, 701–739 (1993)MATHCrossRefMathSciNetGoogle Scholar
  28. 28.
    Lacey, D., Jones, N.D., Van Wyk, E., Frederiksen, C.C.: Proving correctness of compiler optimizations by temporal logic. In: Proc. 29th ACM Symposium on Principles of Programming Languages, pp. 283–294. Association of Computing Machinery (2002)Google Scholar
  29. 29.
    Lacey, D., Jones, N.D., Van Wyk, E., Frederiksen, C.C.: Compiler optimization correctness by temporal logic. Higher Order and Symbolic Computation 17(3), 173–206 (2004)MATHCrossRefGoogle Scholar
  30. 30.
    Leinenbach, D., Paul, W., Petrova, E.: Towards the formal verification of a C0 compiler: Code generation and implementation correctness. In: 3rd IEEE International Conference on Software Engineering and Formal Methods. IEEE Computer Society Press, Los Alamitos (2005)Google Scholar
  31. 31.
    McCarthy, J., Painter, J.A.: Correctness of a compiler for arithmetical expressions. In: Schwartz, J.T. (ed.) Proceedings of a Symposium in Applied Mathematics, Mathematical Aspects of Computer Science, vol. 19. American Mathematical Society (1967)Google Scholar
  32. 32.
    Moore, J.S.: Piton: A Mechanically Verified Assembly-Level Language. Kluwer Academic Press, Dordrecht (1996)Google Scholar
  33. 33.
    Mosses, P.D.: Abstract semantic algebras. In: Bjørner, D. (ed.) Formal description of programming concepts II. IFIP IC-2 Working Conference, pp. 63–88. North Holland, Amsterdam (1982)Google Scholar
  34. 34.
    Müller-Olm, M.: Modular Compiler Verification: A Refinement-Algebraic Approach Advocating Stepwise Abstraction. LNCS, vol. 1283. Springer, New York (1997)Google Scholar
  35. 35.
    Necula, G.C.: Proof-carrying code. In: Proceedings of the 24th ACM SIGPLAN-SIGACT symposium on Principles of programming languages, pp. 106–119. ACM Press, New York (1997)CrossRefGoogle Scholar
  36. 36.
    Necula, G.C.: Translation validation for an optimizing compiler. In: PLDI 2000: SIGPLAN Conference on Programming Language Design and Implementation, pp. 83–95. ACM, New York (2000)CrossRefGoogle Scholar
  37. 37.
    Necula, G.C., Lee, P.: The design and implementation of a certifying compiler. In: Proceedings of the 1998 ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI), pp. 333–344 (1998)Google Scholar
  38. 38.
    Nymeyer, A., Katoen, J.-P., Westra, Y., Ablas, H.: Codegeneration = A *+BURS. In: Gyimóthy, T. (ed.) CC 1996. LNCS, vol. 1060, pp. 160–176. Springer, Heidelberg (1996)Google Scholar
  39. 39.
    Palsberg, J.: An automatically generated and provably correct compiler for a subset of Ada. In: IEEE International Conference on Computer Languages (1992)Google Scholar
  40. 40.
    Pelegr-Llopart, E., Graham, S.L.: Optimal code generation for expression trees: An application of BURS theory. In: Principle of Programming Languages POPL 1988, pp. 294–308. ACM, New York (1988)Google Scholar
  41. 41.
    Pnueli, A., Shtrichman, O., Siegel, M.: Translation Validation for Synchronous Languages. In: Larsen, K.G., Skyum, S., Winskel, G. (eds.) ICALP 1998. LNCS, vol. 1443, p. 235. Springer, Heidelberg (1998)CrossRefGoogle Scholar
  42. 42.
    Poetzsch-Heffter, A., Gawkowski, M.: Towards proof generating compilers. Electronic Notes in Theoretical Computer Science 132(1) (2005)Google Scholar
  43. 43.
    Polak, W.: Compiler specification and verification. In: Hartmanis, J., Goos, G. (eds.) Compiler Specification and Verification. LNCS, vol. 124. Springer, Heidelberg (1981)Google Scholar
  44. 44.
    Proebsting, T.A.: BURS automata generation. ACM Transactions on Programming Languages and Systems 17(3), 461–486 (1995)CrossRefGoogle Scholar
  45. 45.
    Samet, H.: Automatically proving the correctness of translations involving optimized code. PhD thesis (1975)Google Scholar
  46. 46.
    Samet, H.: Compiler testing via symbolic interpretation. In: ACM 76: Proceedings of the annual conference, pp. 492–497. ACM Press, New York (1976)CrossRefGoogle Scholar
  47. 47.
    Samet, H.: A machine description facility for compiler testing. IEEE Transactions on Software Engineering 3(5), 343–351 (1977)CrossRefGoogle Scholar
  48. 48.
    Samet, H.: A normal form for compiler testing. In: Proceedings of the 1977 symposium on Artificial intelligence and programming languages, pp. 155–162 (1977)Google Scholar
  49. 49.
    Samet, H.: Proving the correctness of heuristically optimized code. Communications of the ACM 21(7), 570–582 (1978)MATHCrossRefGoogle Scholar
  50. 50.
    Stärk, R., Schmid, J., Börger, E.: Java and the Java Virtual Machine. Springer, Heidelberg (2001)MATHGoogle Scholar
  51. 51.
    Strecker, M.: Formal Verification of a Java Compiler in Isabelle. In: Voronkov, A. (ed.) CADE 2002. LNCS, vol. 2392, pp. 63–77. Springer, Heidelberg (2002)Google Scholar
  52. 52.
    Wand, M.: A semantic prototyping system. In: SIGPLAN Notices. SIGPLAN 84 Symposium On Compiler Construction, vol. 19(6), pp. 213–221 (June 1984)Google Scholar
  53. 53.
    Zimmermann, W., Gaul, T.: On the Construction of Correct Compiler Back-Ends: An ASM-Approach. Journal of Universal Computer Science 3(5), 504–567 (1997)MATHMathSciNetGoogle Scholar
  54. 54.
    Zuck, L., Pnueli, A., Fang, Y., Goldberg, B.: VOC: A Translation Validator for Optimizing Compilers. In: Knoop, J., Zimmermann, W. (eds.) Electronic Notes in Theoretical Computer Science, vol. 65. Elsevier, Amsterdam (2002)Google Scholar
  55. 55.
    Zuck, L., Pnueli, A., Fang, Y., Goldberg, B.: Voc: A methodology for the translation validation of optimizing compilers. Journal of Universal Computer Science 9(3), 223–247 (2003)Google Scholar
  56. 56.
    Zuck, L., Pnueli, A., Fang, Y., Goldberg, B., Hu, Y.: Translation and run-time validation of optimized code. Electronic Notes in Theoretical Computer Science 70(4) (2002)Google Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 2006

Authors and Affiliations

  • Wolf Zimmermann
    • 1
  1. 1.Institut für InformatikMartin-Luther-Universität Halle-WittenbergHalle/SaaleGermany

Personalised recommendations