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 [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.

[1]  O. Ruthing,et al.  Optimal code motion in the presence of large expressions , 1998, Proceedings of the 1998 International Conference on Computer Languages (Cat. No.98CB36225).

[2]  Dhananjay M. Dhamdhere,et al.  Complexity of bi-directional data flow analysis , 1993, POPL '93.

[3]  Dhananjay M. Dhamdhere A Usually Linear Algorithm for Register Assignment Using Edge Placement of Load and Store Instructions , 1990, Comput. Lang..

[4]  Dhananjay M. Dhamdhere,et al.  An elimination algorithm for bidirectional data flow problems using edge placement , 1993, TOPL.

[5]  Dhananjay M. Dhamdhere,et al.  A composite hoisting-strength reduction transformation for global program optimization part ii , 1982 .

[6]  Dhananjay M. Dhamdhere,et al.  A generalized theory of bit vector data flow analysis , 1994, TOPL.

[7]  Oliver Rüthing Interacting Code Motion Transformations: Their Impact and Their Complexity , 2000, Lecture Notes in Computer Science.

[8]  Bernhard Steffen,et al.  Optimal code motion: theory and practice , 1994, TOPL.

[9]  Manfred P. Stadel,et al.  A variation of Knoop, Rüthing, and Steffen's Lazy Code Motion , 1993, SIGP.

[10]  Dhananjay M. Dhamdhere,et al.  Complexity of Bidirectional Data Flow Analysis. , 1993 .

[11]  Barbara G. Ryder,et al.  Lattice frameworks for multisource and bidirectional data flow problems , 1995, TOPL.

[12]  Manfred P. Stadel,et al.  A solution to a problem with Morel and Renvoise's “Global optimization by suppression of partial redundancies” , 1988, TOPL.

[13]  Dhananjay M. Dhamdhere Practical adaption of the global optimization algorithm of Morel and Renvoise , 1991, TOPL.

[14]  Dhananjay M. Dhamdhere A new algorithm for composite hoisting and strength reduction optimisation , 1989 .

[15]  Dhananjay M. Dhamdhere A fast algorithm for code movement optimisation , 1988, SIGP.

[16]  Dhananjay M. Dhamdhere Corrigendum: a new algorithm for composite hoisting and strength reduction optimisation , 1989 .

[17]  Dhananjay M. Dhamdhere,et al.  How to analyze large programs efficiently and informatively , 1992, PLDI '92.

[18]  Etienne Morel,et al.  Global optimization by suppression of partial redundancies , 1979, CACM.

[19]  Bernhard Steffen,et al.  Lazy code motion , 1992, PLDI '92.

[20]  Jeffrey D. Ullman,et al.  A Simple Algorithm for Global Data Flow Analysis Problems , 1975, SIAM J. Comput..