Advertisement

Bidirectional Data Flow Analysis in Code Motion: Myth and Reality

  • Oliver Rüthing
Conference paper
Part of the Lecture Notes in Computer Science book series (LNCS, volume 1503)

Abstract

Bidirectional data flow analysis has become the standard technique for solving bit-vector based code motion problems in the presence of critical edges. Unfortunately, bidirectional analyses have turned out to be conceptually and computationally harder than their unidirectional counterparts. In this paper we show that code motion in the presence of critical edges can be achieved without bidirectional data flow analyses. This is demonstrated by means of an adaption of our algorithm for lazy code motion [15], which is developed from a fresh, specification oriented view. Besides revealing a better conceptual understanding of the phenomena caused by critical edges, this also settles the foundation for a new and efficient hybrid iteration strategy that intermixes conventional round-robin iteration with the exhaustive iteration on critical subparts.

Keywords

Program Point Critical Edge Program Language Design Code Motion Lifetime Optimality 
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.
    D. M. Dhamdhere. A fast algorithm for code movement optimization. ACM SIGPLAN Notices, 23(10):172–180, 1988.CrossRefGoogle Scholar
  2. 2.
    D. M. Dhamdhere. A new algorithm for composite hoisting and strength reduction optimisation (+ Corrigendum). International Journal of Computer Mathematics, 27:1–14 (+ 31–32), 1989.CrossRefGoogle Scholar
  3. 3.
    D. M. Dhamdhere. A usually linear algorithm for register assignment using edge placement of load and store instructions. Journal of Computer Languages, 15(2):83–94, 1990.CrossRefGoogle Scholar
  4. 4.
    D. M. Dhamdhere. Practical adaptation of the global optimization algorithm of Morel and Renvoise. ACM Transactions on Programming Languages and Systems, 13(2):291–294, 1991. Technical Correspondence.CrossRefGoogle Scholar
  5. 5.
    D. M. Dhamdhere and U. P. Khedker. Complexity of bidirectional data flow analysis. In Conf. Record of the 20 th ACM Symposium on the Principles of Programming Languages, pages 397–409, Charleston, SC, January 1993.Google Scholar
  6. 6.
    D. M. Dhamdhere and H. Patil. An elimination algorithm for bidirectional data flow problems using edge placement. ACM Transactions on Programming Languages and Systems, 15(2):312–336, April 1993.Google Scholar
  7. 7.
    D. M. Dhamdhere, B. K. Rosen, and F. K. Zadeck. How to analyze large programs efficiently and informatively. In Proc. ACM SIGPLAN Conference on Programming Language Design and Implementation’92, volume 27,7 of ACM SIGPLAN Notices, pages 212–223, San Francisco, CA, June 1992.Google Scholar
  8. 8.
    K.-H. Drechsler and M. P. Stadel. A solution to a problem with Morel and Renvoise’s “Global optimization by suppression of partial redundancies”. ACM Transactions on Programming Languages and Systems, 10(4):635–640, 1988. Technical Correspondence.zbMATHCrossRefGoogle Scholar
  9. 9.
    K.-H. Drechsler and M. P. Stadel. A variation of Knoop, Rüthing and Steffen’s lazy code motion. ACM SIGPLAN Notices, 28(5):29–38, 1993.CrossRefGoogle Scholar
  10. 10.
    M. S. Hecht and J. D. Ullman. A simple algorithm for global data flow analysis problems. SIAM Journal on Computing, 4(4):519–532, 1977.CrossRefMathSciNetGoogle Scholar
  11. 11.
    S. Horwitz, A. Demers, and T. Teitelbaum. An efficient general iterative algorithm for data flow analysis. Acta Informatica, 24:679–694, 1987.zbMATHCrossRefMathSciNetGoogle Scholar
  12. 12.
    S. M. Joshi and D. M. Dhamdhere. A composite hoisting-strength reduction transformation for global program optimization-part I. International Journal of Computer Mathematics, 11:21–41, 1982.zbMATHCrossRefGoogle Scholar
  13. 13.
    S. M. Joshi and D. M. Dhamdhere. A composite hoisting-strength reduction transformation for global program optimization-part II. International Journal of Computer Mathematics, 11:111–126, 1982.zbMATHCrossRefGoogle Scholar
  14. 14.
    U. P. Khedker and D. M. Dhamdhere. A generalized theory of bit vector data flow analysis. ACM Transactions on Programming Languages and Systems, 16(5):1472–1511, September 1994.Google Scholar
  15. 15.
    J. Knoop, O. Rüthing, and B. Steffen. Lazy code motion. In Proc. ACM SIGPLAN Conference on Programming Language Design and Implementation’92, volume 27,7 of ACM SIGPLAN Notices, pages 224–234, San Francisco, CA, June 1992.Google Scholar
  16. 16.
    J. Knoop, O. Rüthing, and B. Steffen. Optimal code motion: Theory and practice. ACM Transactions on Programming Languages and Systems, 16(4):1117–1155, 1994.CrossRefGoogle Scholar
  17. 17.
    P. M. Masticola, T. J. Marlowe, and B. G. Ryder. Lattice frameworks for multisource and bidirectional data flow problems. ACM Transactions on Programming Languages and Systems, 17(5):777–802, 1995.CrossRefGoogle Scholar
  18. 18.
    E. Morel and C. Renvoise. Global optimization by suppression of partial redundancies. Communications of the ACM, 22(2):96–103, 1979.zbMATHCrossRefMathSciNetGoogle Scholar
  19. 19.
    O. Rüthing. Interacting Code Motion Transformations. Their Impact and their complexity. PhD thesis, Institut für Informatik und Praktische Mathematik, Christian-Albrechts-Universität Kiel, Germany, 1997. Available as http://sunshine.cs.uni-dortmund.de/~ruething/diss.ps.gz.Google Scholar
  20. 20.
    O. Rüthing. Optimal code motion in the presence of large expressions. In Proc. Internatinal Conference on Computer Languages (ICCL’98), Chicago, IL., 1998. IEEE.Google Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 1998

Authors and Affiliations

  • Oliver Rüthing
    • 1
  1. 1.Department of Computer ScienceUniversity of DortmundGermany

Personalised recommendations