Program analysis via graph reachability

Abstract : This paper describes how a number of program-analysis problems can be solved by transforming them to graph-reachability problems. Some of the program-analysis problems that are amenable to this treatment include program slicing, certain dataflow-analysis problems, and the problem of approximating the possible 'shapes' that heap-allocated structures in a program can take on. Relationships between graph reachability and other approaches to program analysis are described. Some techniques that go beyond pure graph reachability are also discussed.

[1]  David Melski Interconvertibility of Set Constraints and Context-free Language Reachability 1 , 1996 .

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

[3]  Thomas W. Reps,et al.  Precise interprocedural dataflow analysis via graph reachability , 1995, POPL '95.

[4]  Neil D. Jones,et al.  Flow analysis and optimization of LISP-like structures , 1979, POPL.

[5]  Alexander Aiken,et al.  Partial online cycle elimination in inclusion constraint graphs , 1998, PLDI.

[6]  Nevin Heintze,et al.  Set-based analysis of ML programs , 1994, LFP '94.

[7]  Catriel Beeri,et al.  On the power of magic , 1987, J. Log. Program..

[8]  Reinhard Wilhelm,et al.  Grammar Flow Analysis , 1991, Attribute Grammars, Applications and Systems.

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

[10]  Thomas W. Reps,et al.  Precise Interprocedural Dataflow Analysis with Applications to Constant Propagation , 1995, TAPSOFT.

[11]  Joe D. Warren,et al.  The program dependence graph and its use in optimization , 1987, TOPL.

[12]  Alfred V. Aho,et al.  The Design and Analysis of Computer Algorithms , 1974 .

[13]  William Pugh,et al.  Eliminating false data dependences using the Omega test , 1992, PLDI '92.

[14]  David W. Binkley,et al.  Program slicing , 2008, 2008 Frontiers of Software Maintenance.

[15]  Barbara G. Ryder,et al.  Pointer-induced aliasing: a problem classification , 1991, POPL '91.

[16]  Joe D. Warren,et al.  The program dependence graph and its use in optimization , 1984, TOPL.

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

[18]  Mihalis Yannakakis,et al.  Graph-theoretic methods in database theory , 1990, PODS.

[19]  Christos H. Papadimitriou,et al.  The parallel complexity of simple chain queries , 1987, PODS '87.

[20]  Thomas W. Reps,et al.  Speeding up slicing , 1994, SIGSOFT '94.

[21]  G. Ramalingam Data flow frequency analysis , 1996, PLDI '96.

[22]  Hiralal Agrawal On slicing programs with jump statements , 1994, PLDI '94.

[23]  Charles N. Fischer,et al.  Crafting a Compiler , 1988 .

[24]  Monica S. Lam,et al.  Efficient and exact data dependence analysis , 1991, PLDI '91.

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

[26]  Pierre Deransart,et al.  Attribute Grammars: Definitions, Systems and Bibliography , 1988 .

[27]  Patrick Cousot,et al.  Abstract interpretation: a unified lattice model for static analysis of programs by construction or approximation of fixpoints , 1977, POPL.

[28]  Raghu Ramakrishnan,et al.  Review - Magic Sets and Other Strange Ways to Implement Logic Programs , 1999, ACM SIGMOD Digit. Rev..

[29]  Larry Melvin Masinter,et al.  Global program analysis in an interactive environment , 1979 .

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

[31]  Leslie G. Valiant,et al.  General Context-Free Recognition in Less than Cubic Time , 1975, J. Comput. Syst. Sci..

[32]  Joxan Jaffar,et al.  A decision procedure for a class of set constraints , 1990, [1990] Proceedings. Fifth Annual IEEE Symposium on Logic in Computer Science.

[33]  David A. Padua,et al.  Dependence graphs and compiler optimizations , 1981, POPL '81.

[34]  John McCarthy,et al.  A Basis for a Mathematical Theory of Computation1) , 1959 .

[35]  Lawrence T. Kou,et al.  On Live-Dead Analysis for Global Data Flow Problems , 1977, JACM.

[36]  Susan Horwitz,et al.  Identifying the semantic and textual differences between two versions of a program , 1990, PLDI '90.

[37]  William Pugh,et al.  The Omega test: A fast and practical integer programming algorithm for dependence analysis , 1991, Proceedings of the 1991 ACM/IEEE Conference on Supercomputing (Supercomputing '91).

[38]  Thomas W. Reps,et al.  Shape analysis as a generalized path problem , 1995, PEPM '95.

[39]  Jong-Deok Choi,et al.  Static slicing in the presence of goto statements , 1994, TOPL.

[40]  Frank Tip,et al.  A survey of program slicing techniques , 1994, J. Program. Lang..

[41]  Richard M. Karp,et al.  On the Security of Ping-Pong Protocols , 1982, Inf. Control..

[42]  Utpal Banerjee,et al.  Speedup of ordinary programs , 1979 .

[43]  Barry K. Rosen,et al.  Qualified Data Flow Problems , 1981, IEEE Trans. Software Eng..

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

[45]  Thomas W. Reps,et al.  Program Specialization via Program Slicing , 1996, Dagstuhl Seminar on Partial Evaluation.

[46]  Robert Giegerich,et al.  Invariance of Approximate Semantics with Respect to Program Transformations , 1981, GI Jahrestagung.

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

[48]  Jan Maluszy¿ski Program Analysis via Graph Reachability , 1997 .

[49]  Thomas Ball,et al.  Slicing Programs with Arbitrary Control-flow , 1993, AADEBUG.

[50]  Susan Horwitz,et al.  Fast and accurate flow-insensitive points-to analysis , 1997, POPL '97.

[51]  Jeffrey D. Ullman,et al.  Parallel Complexity of Logical Query Programs , 1986, FOCS.

[52]  Thomas W. Reps,et al.  Demand interprocedural dataflow analysis , 1995, SIGSOFT FSE.

[53]  Rajiv Gupta,et al.  Demand-driven computation of interprocedural data flow , 1995, POPL '95.

[54]  John Banning,et al.  An efficient way to find the side effects of procedure calls and the aliases of variables , 1979, POPL.

[55]  David Callahan,et al.  The program summary graph and flow-sensitive interprocedual data flow analysis , 1988, PLDI '88.

[56]  Keith Brian Gallagher,et al.  Using Program Slicing in Software Maintenance , 1991, IEEE Trans. Software Eng..

[57]  Phil Pfeiffer,et al.  Dependence analysis for pointer variables , 1989, PLDI '89.

[58]  David Scott Warren,et al.  Memoing for logic programs , 1992, CACM.

[59]  Alexander Aiken,et al.  Type inclusion constraints and type inference , 1993, FPCA '93.

[60]  David Binkley,et al.  Using semantic differencing to reduce the cost of regression testing , 1992, Proceedings Conference on Software Maintenance 1992.

[61]  Wojtek Kozaczynski,et al.  Automated support for legacy code understanding , 1994, CACM.

[62]  Shmuel Sagiv,et al.  Building a Bridge between Pointer Aliases and Program Dependences , 1998, Nord. J. Comput..

[63]  Thomas W. Reps,et al.  Interconvertibility of a class of set constraints and context-free-language reachability , 2000, Theor. Comput. Sci..

[64]  John C. Reynolds,et al.  Automatic computation of data set definitions , 1968, IFIP Congress.

[65]  Thomas W. Reps,et al.  Interconveritibility of Set Constraints and Context-Free Language Reachability , 1997, PEPM.

[66]  David W. Binkley,et al.  Interprocedural slicing using dependence graphs , 1990, TOPL.

[67]  Thomas W. Reps,et al.  Integrating noninterfering versions of programs , 1989, TOPL.

[68]  Daniel H. Younger,et al.  Recognition and Parsing of Context-Free Languages in Time n^3 , 1967, Inf. Control..

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

[70]  Ken Kennedy,et al.  Automatic generation of efficient evaluators for attribute grammars , 1976, POPL.

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

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

[73]  Alfred V. Aho,et al.  Algorithms for Finding Patterns in Strings , 1991, Handbook of Theoretical Computer Science, Volume A: Algorithms and Complexity.

[74]  Ken Kennedy,et al.  PTOOL : A Semi-Automatic Parallel Programming Assistant , 1986, International Conference on Parallel Processing.

[75]  Donald E. Knuth,et al.  Fast Pattern Matching in Strings , 1977, SIAM J. Comput..

[76]  Thomas W. Reps,et al.  Demand Interprocedural Program Analysis Using Logic Databases , 1993, Workshop on Programming with Logic Databases , ILPS.

[77]  James R. Larus,et al.  Detecting conflicts between structure accesses , 1988, PLDI '88.

[78]  Alexander Aiken,et al.  Static type inference in a dynamically typed language , 1991, POPL '91.

[79]  Susan Horwitz,et al.  Incremental program testing using program dependence graphs , 1993, POPL '93.

[80]  Ken Kennedy,et al.  Practical dependence testing , 1991, PLDI '91.

[81]  Alexander Aiken,et al.  Implementing Regular Tree Expressions , 1991, FPCA.

[82]  John McCarthy,et al.  A basis for a mathematical theory of computation, preliminary report , 1899, IRE-AIEE-ACM '61 (Western).

[83]  Bjarne Steensgaard,et al.  Points-to analysis in almost linear time , 1996, POPL '96.

[84]  Uwe Aßmann On Edge Addition Rewrite Systems and their Relevance to Program Analysis , 1994, TAGT.

[85]  Torben Æ. Mogensen Separating binding times in language specifications , 1989, Conference on Functional Programming Languages and Computer Architecture.

[86]  Uwe Aamann On Edge Addition Rewrite Systems and Their Relevance to Program Analysis , 1994 .

[87]  Joxan Jaffar,et al.  Set Constraints and Set-Based Analysis , 1994, PPCP.

[88]  Jeffrey D. Uuman Principles of database and knowledge- base systems , 1989 .