Eecient Flow-sensitive Interprocedural Computation of Pointer-induced Aliases and Side Eeects

We present practical approximation methods for computing interprocedural aliases and side eeects for a program written in a language that includes pointers, reference parameters and recursion. We present the following results: 1) An algorithm for ow-sensitive interprocedural alias analysis which is more precise and eecient than the best inter-procedural method known. 2) An extension of traditional ow-insensitive alias analysis which accommodates pointers and provides a framework for a family of algorithms which trade oo precision for eeciency. 3) An algorithm which correctly computes side eeects in the presence of pointers. Pointers cannot be correctly handled by conventional methods for side eeect analysis. 4) An alias naming technique which handles dynamically allocated objects and guarantees the correctness of data-ow analysis. 5) A compact representation based on transitive reduction which does not result in a loss of precision and improves precision in some cases. 6) A method for intraprocedural alias analysis which is based on a sparse representation .

[1]  Alfred V. Aho,et al.  The Transitive Reduction of a Directed Graph , 1972, SIAM J. Comput..

[2]  Jeffrey D. Ullman,et al.  Global Data Flow Analysis and Iterative Algorithms , 1976, J. ACM.

[3]  John Banning,et al.  : An Efficient , 2022 .

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

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

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

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

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

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

[10]  Ron Cytron,et al.  An Overview of the PTRAN Analysis System for Multiprocessing , 1988, J. Parallel Distributed Comput..

[11]  Thomas P. Murtagh,et al.  Lifetime analysis of dynamically allocated objects , 1988, POPL '88.

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

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

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

[15]  Michael G. Burke An interval-based approach to exhaustive and incremental interprocedural data-flow analysis , 1990, TOPL.

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

[17]  Mark N. Wegman,et al.  Efficiently computing static single assignment form and the control dependence graph , 1991, TOPL.

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