An Empirical Comparison of Interprocedural Pointer Alias Analyses

This paper describes an empirical comparison of three pointer alias analysis algorithms: flow-sensitive, flow-insensitive, and flow-insensitive with precomputed kill information. In addition to contrasting the precision and efficiency of these analyses, it describes implementation techniques and quantifies their analysis-time speed-up. Lastly, it illustrates the object-oriented approach used in the design of the system, which provides a natural example of multiple inheritance.

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

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

[3]  Jong-Deok Choi,et al.  Interprocedural pointer alias analysis , 1999, TOPL.

[4]  Laurie J. Hendren,et al.  Is it a tree, a DAG, or a cyclic graph? A shape analysis for heap-directed pointers in C , 1996, POPL '96.

[5]  G. Ramalingam On Sparse Evaluation Representations , 1997, SAS.

[6]  Laurie J. Hendren,et al.  Context-sensitive interprocedural points-to analysis in the presence of function pointers , 1994, PLDI '94.

[7]  Jong-Deok Choi,et al.  Flow-Insensitive Interprocedural Alias Analysis in the Presence of Pointers , 1994, LCPC.

[8]  Erik Ruf,et al.  Context-insensitive alias analysis reconsidered , 1995, PLDI '95.

[9]  Barbara G. Ryder,et al.  Interprocedural modification side effect analysis with pointer aliasing , 1993, PLDI '93.

[10]  Reinhard Wilhelm,et al.  Solving shape-analysis problems in languages with destructive updating , 1998, TOPL.

[11]  Barbara G. Ryder,et al.  Program decomposition for pointer aliasing: a step toward practical analyses , 1996, SIGSOFT '96.

[12]  Steven W. K. Tjiang,et al.  SUIF: an infrastructure for research on parallelizing and optimizing compilers , 1994, SIGP.

[13]  Susan Horwitz,et al.  The Effects of the Precision of Pointer Analysis , 1997, SAS.

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

[15]  Susan Horwitz,et al.  Precise flow-insensitive may-alias analysis is NP-hard , 1997, TOPL.

[16]  Jong-Deok Choi,et al.  Efficient flow-sensitive interprocedural computation of pointer-induced aliases and side effects , 1993, POPL '93.

[17]  Barbara G. Ryder,et al.  Defining flow sensitivity in data flow problems , 1995 .

[18]  Barbara G. Ryder,et al.  Comparing flow and context sensitivity on the modification-side-effects problem , 1998, ISSTA '98.

[19]  Anthony Pioli,et al.  Conditional Pointer Aliasing and Constant Propagation , 1999 .

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

[21]  Alexandru Nicolau,et al.  Parallelizing Programs with Recursive Data Structures , 1989, IEEE Trans. Parallel Distributed Syst..

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

[23]  Danny Soroker,et al.  Extension mechanisms in Montana , 1997, Proceedings of the Eighth Israeli Conference on Computer Systems and Software Engineering.

[24]  David Grove,et al.  Vortex: an optimizing compiler for object-oriented languages , 1996, OOPSLA '96.

[25]  G. Ramalingam,et al.  The undecidability of aliasing , 1994, TOPL.

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

[27]  David Grove,et al.  Frameworks for Intra- and Interprocedural Dataflow Analysis , 1998 .

[28]  Alain Deutsch,et al.  Interprocedural may-alias analysis for pointers: beyond k-limiting , 1994, PLDI '94.

[29]  Monica S. Lam,et al.  Efficient context-sensitive pointer analysis for C programs , 1995, PLDI '95.

[30]  Ralph Johnson,et al.  design patterns elements of reusable object oriented software , 2019 .

[31]  William Landi,et al.  Undecidability of static analysis , 1992, LOPL.