Interprocedural Def-Use associations in C programs

We present the first high-precision algorithm for obtaining Def-Use Associations in C programs with single level pointers. While the precise solution of the problem is lVP-hani, our polynomial-time algorithm uses program-point-specific pointer-induced aliases to obtain good approximations to the set of definitions reaching a program point. This information is crucial to effective debugging, testing and maintenance of C software systems. Initial implementation experiences with this approach are presented.

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

[2]  AgrawalHiralal,et al.  Dynamic program slicing , 1990 .

[3]  Barbara G. Ryder,et al.  Interprocedural Reaching Definitions in the Presence of Single Level Pointers , 1992 .

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

[5]  Elaine J. Weyuker,et al.  A data flow testing tool , 1985 .

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

[7]  Wuu Yang,et al.  A program integration algorithm that accommodates semantics-preserving transformations , 1992, SDE 4.

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

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

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

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

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

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

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

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

[16]  Andres Rudmik,et al.  The design of a data flow analyzer , 1982, SIGPLAN '82.

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

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

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

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

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

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

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

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

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

[26]  Mary Lou Soffa,et al.  Interprocedual data flow testing , 1989 .

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