An efficient hybrid algorithm for incremental data flow analysis

Our exhaustive and incremental hybrid data flow analysis algorithms, based on iteration and elimination techniques, are designed for incremental update of a wide variety of monotone data flow problems in response to source program changes. Unlike previous incremental iterative methods, this incremental algorithm efficiently computes precise and correct solutions. We give theoretical results on the imprecision of restarting iteration for incremental update by fixed point iteration which provided motivation for our algorithm design. Described intuitively, the main algorithm idea is to factor the data flow solution on strong connected components of the flow graph into local and external parts, solving for the local parts by iteration and propagating these effects on the condensation of the flow graph to obtain the entire data flow solution. The incremental hybrid algorithm re-performs those algorithm steps affected by the program changes.

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

[2]  Barry K. Rosen A Lubricant for Data Flow Analysis , 1982, SIAM J. Comput..

[3]  Robert Paige,et al.  Program Derivation by Fixed Point Computation , 1989, Sci. Comput. Program..

[4]  Alfred V. Aho,et al.  Compilers: Principles, Techniques, and Tools , 1986, Addison-Wesley series in computer science / World student series edition.

[5]  Robert E. Tarjan,et al.  A Unified Approach to Path Problems , 1981, JACM.

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

[7]  Ken Kennedy,et al.  Automatic translation of FORTRAN programs to vector form , 1987, TOPL.

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

[9]  Vida Ghodssi Incremental analysis of programs , 1983 .

[10]  Barbara G. Ryder,et al.  Elimination algorithms for data flow analysis , 1986, CSUR.

[11]  Mary Lou Soffa,et al.  An Incremental Version of Iterative Data Flow Analysis , 1989, IEEE Trans. Software Eng..

[12]  Barbara G. Ryder,et al.  Conditions for incremental iteration: Examples and counterexamples , 1988, Sci. Comput. Program..

[13]  Barbara G. Ryder,et al.  Incremental data flow analysis via dominator and attribute update , 1988, POPL '88.

[14]  Keith Daniel Cooper Interprocedural data flow analysis in a programming environment , 1983 .

[15]  Barbara G. Ryder,et al.  An incremental algorithm for software analysis , 1987, SDE 2.

[16]  Elaine J. Weyuker,et al.  Selecting Software Test Data Using Data Flow Information , 1985, IEEE Transactions on Software Engineering.

[17]  Eugene W. Myers,et al.  A precise inter-procedural data flow algorithm , 1981, POPL '81.

[18]  Thomas W. Reps Optimal-time incremental semantic analysis for syntax-directed editors , 1982, POPL '82.

[19]  Keith D. Cooper,et al.  Analyzing aliases of reference formal parameters , 1985, POPL.

[20]  Ken Kennedy,et al.  Fast interprocedual alias analysis , 1989, POPL '89.

[21]  Matthew S. Hecht,et al.  Flow Analysis of Computer Programs , 1977 .

[22]  Robert E. Tarjan,et al.  Fast Algorithms for Solving Path Problems , 1981, JACM.

[23]  Ken Kennedy,et al.  Efficient computation of flow insensitive interprocedural summary information , 1984, SIGPLAN '84.