Interprocedural Reaching Definitions in the Presence of Single Level Pointers

This paper describes the rst algorithm that calculates Interprocedural Def-Use Associations in C software systems. Our algorithm accounts for program-point-speci c pointer-induced aliases, although it is currently limited to programs using a single level of indirection. We prove the NP-hardness of the Interprocedural Reaching De nitions Problem and point out the approximation made by our polynomial-time algorithm. Initial empirical results are also presented. The research reported here was supported by Siemens Corporate Research and NSF grants CCR-8920078 and CCR-9023628 1/5.

[1]  RepsThomas,et al.  A program integration algorithm that accommodates semantics-preserving transformations , 1992 .

[2]  Prakash Panangaden,et al.  Computation of aliases and support sets , 1987, POPL '87.

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

[4]  Joseph Robert Horgan,et al.  Dynamic program slicing , 1990, PLDI '90.

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

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

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

[8]  William Landi,et al.  Interprocedural aliasing in the presence of pointers , 1992 .

[9]  William E. Weihl,et al.  Interprocedural data flow analysis in the presence of pointers, procedure variables, and label variables , 1980, POPL '80.

[10]  Zahira Ammarguellat,et al.  Parcel and Miprac: Parallelizers for Symbolic and Numeric Programs , .

[11]  Janusz W. Laski,et al.  Dynamic slicing of computer programs , 1990, J. Syst. Softw..

[12]  Jeffrey M. Barth A practical interprocedural data flow analysis algorithm , 1978, CACM.

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

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

[15]  Mary Lou Soffa,et al.  Computation of interprocedural definition and use dependencies , 1990, Proceedings. 1990 International Conference on Computer Languages.

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

[17]  Deborah S. Coutant Retargetable high-level alias analysis , 1986, POPL '86.

[18]  David B. Lomet Data Flow Analysis in the Presence of Procedure Calls , 1977, IBM J. Res. Dev..

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

[20]  Vincent A. Guarna,et al.  A Technique for Analyzing Pointer and Structure References In Parallel Restructuring Compilers , 1988, ICPP.

[21]  Elaine J. Weyuker,et al.  Data flow-based test adequacy analysis for languages with pointers , 1991, TAV4.

[22]  G. A. Venkatesh,et al.  The semantic approach to program slicing , 1991, PLDI '91.

[23]  James R. Larus,et al.  Restructuring symbolic programs for concurrent execution on multiprocessors , 1989 .

[24]  Barbara G. Ryder ISMM: the incremental software maintenance manager , 1989, Proceedings. Conference on Software Maintenance - 1989.

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

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

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

[28]  Alain Deutsch,et al.  On determining lifetime and aliasing of dynamically allocated data in higher-order functional specifications , 1989, POPL '90.

[29]  M. Platoff,et al.  An integrated program representation and toolkit for the maintenance of C programs , 1991, Proceedings. Conference on Software Maintenance 1991.