Bidirectional Data Flow Analysis in Code Motion: Myth and Reality
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 , 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.
KeywordsProgram Point Critical Edge Program Language Design Code Motion Lifetime Optimality
Unable to display preview. Download preview PDF.
- 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.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.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
- 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.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
- 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.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