Demand-driven computation of interprocedural data flow

This paper presents a general framework for deriving demand-driven algorithms for interprocedural data flow analysis of imperative programs. The goal of demand-driven analysis is to reduce the time and/or space overhead of conventional exhaustive analysis by avoiding the collection of information that is not needed. In our framework, a demand for data flow information is modeled as a set of date flow queries. The derived demand-driven algorithms find responses to these queries through a partial reversal of the respective data flow analysis. Depending on whether minimizing time or space is of primary concern, result caching may be incorporated in the derived algorithm. Our framework is applicable to interprocedural data flow problems with a finite domain set. If the problem's flow functions are distributive, the derived demand algorithms provide as precise information as the corresponding exhaustive analysis. For problems with monotone but non-distributive flow functions the provided data flow solutions are only approximate. We demonstrate our approach using the example of interprocedural copy constant propagation.

[1]  Ron Cytron,et al.  Efficient accommodation of may-alias information in SSA form , 1993, PLDI '93.

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

[3]  Jong-Deok Choi,et al.  On the Efficient Engineering of Ambitious Program Analysis , 1994, IEEE Trans. Software Eng..

[4]  Daniel M. Yellin,et al.  Extending Typestate Checking Using Conditional Liveness Analysis , 1993, IEEE Trans. Software Eng..

[5]  Gary A. Kildall,et al.  A unified approach to global program optimization , 1973, POPL.

[6]  Neil D. Jones,et al.  Data flow analysis of applicative programs using minimal function graphs , 1986, POPL '86.

[7]  Jong-Deok Choi,et al.  Automatic construction of sparse data flow evaluation graphs , 1991, POPL '91.

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

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

[10]  John Hughes,et al.  Reversing Abstract Interpretations , 1992, Sci. Comput. Program..

[11]  Bernhard Steffen,et al.  The Interprocedural Coincidence Theorem , 1992, CC.

[12]  Keshav Pingali,et al.  Dependence-based program analysis , 1993, PLDI '93.

[13]  Barry K. Rosen Linear cost is sometimes quadratic , 1981, POPL '81.

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

[15]  Neil D. Jones,et al.  A flexible approach to interprocedural data flow analysis and programs with recursive data structures , 1982, POPL '82.

[16]  Patrick Cousot,et al.  Semantic foundations of program analysis , 1981 .

[17]  François Bourdoncle,et al.  Abstract debugging of higher-order imperative languages , 1993, PLDI '93.

[18]  Patrick Cousot,et al.  Static Determination of Dynamic Properties of Recursive Procedures , 1977, Formal Description of Programming Concepts.

[19]  Linda Torczon,et al.  Interprocedural constant propagation: a study of jump function implementation , 1993, PLDI '93.

[20]  Barry K. Rosen Data Flow Analysis for Procedural Languages , 1979, JACM.

[21]  John H. Reif Symbolic program analysis in almost linear time , 1978, POPL '78.

[22]  Mark N. Wegman,et al.  Constant propagation with conditional branches , 1985, POPL.

[23]  Vadim Maslov,et al.  Lazy array data-flow dependence analysis , 1994, POPL '94.

[24]  Rajiv Gupta,et al.  Reducing the Cost of Data Flow Analysis By Congruence Partitioning , 1994, CC.

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

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

[27]  M. Wegman,et al.  Global value numbers and redundant computations , 1988, POPL '88.

[28]  Wolfgang A. Halang,et al.  Enabling efficient schedulability analysis through conditional linking and program transformations , 1993 .

[29]  Ken Kennedy,et al.  Procedure cloning , 1992, Proceedings of the 1992 International Conference on Computer Languages.

[30]  Thomas W. Reps,et al.  Solving Demand Versions of Interprocedural Analysis Problems , 1994, CC.