An efficient approach to data flow analysis in a multiple pass global optimizer

Data flow analysis is a time-consuming part of the optimization process. As transformations are made in a multiple pass global optimizer, the data flow information must be updated to reflect these changes. Various approaches have been used, including complete recalculation as well as partial recalculation over the affected area. The approach presented here has been designed for maximum efficiency. Data flow information is completely calculated only once, using an interval analysis method which is slightly faster than a purely iterative approach, and which allows partial recomputation when appropriate. A minimal set of data flow information is computed, keeping the computation and update cost low. Following each set of transformations, the data flow information is updated based on knowledge of the effect of each change. This approach saves considerable time over complete recalculation, and proper ordering of the various optimizations minimizes the amount of update required.

[1]  J. A. Faulkner Paul , 1928 .

[2]  Barbara G. Ryder,et al.  Incremental data-flow analysis algorithms , 1988, TOPL.

[3]  Deborah S. Coutant,et al.  Compilers for the New Generation of Hewlett-Packard Computers , 1986, COMPCON.

[4]  Ken Kennedy,et al.  An algorithm for reduction of operator strength , 1977, Commun. ACM.

[5]  Martin Hopkins,et al.  An overview of the PL.8 compiler , 1982, SIGP.

[6]  F. Kenneth Zadeck,et al.  Incremental data flow analysis in a structured program editor , 1984, SIGPLAN '84.

[7]  John Cocke,et al.  A program data flow analysis procedure , 1976, CACM.

[8]  Micha Sharir,et al.  Structural Analysis: A New Approach to Flow Analysis in Optimizing Compilers , 2015 .

[9]  Alfred V. Aho,et al.  Principles of Compiler Design , 1977 .

[10]  Gregory J. Chaitin,et al.  Register allocation and spilling via graph coloring , 2004, SIGP.

[11]  Karl J. Ottenstein,et al.  The program dependence graph in a software development environment , 1984, SDE 1.

[12]  Susan L. Graham,et al.  Gprof: A call graph execution profiler , 1982, SIGPLAN '82.

[13]  Deborah S. Coutant Retargetable high-level alias analysis , 1986, POPL '86.

[14]  Mark Scott Johnson,et al.  Effectiveness of a machine-level, global optimizer , 1986, SIGPLAN '86.

[15]  Alfred V. Aho,et al.  Principles of Compiler Design (Addison-Wesley series in computer science and information processing) , 1977 .

[16]  Barbara G. Ryder Incremental data flow analysis , 1983, POPL '83.

[17]  William S. Worley,et al.  Beyond RISC: High-Precision Architecture , 1986, COMPCON.