Interprocedural Def-Use Associations for C Systems with Single Level Pointers

Def-use analysis links possible value-setting statements for a variable (i.e. definitions) to potential value-fetches (i.e. uses) of that value. This paper describes the first algorithm that calculates accurate interprocedural def-use associations in C software systems. Our algorithm accounts for program-point-specific pointer-induced aliases, though it is currently limited to programs using a single level of indirection. We prove the NP-hardness of the interprocedural reaching definitions problem and describe the approximations made by our polynomial-time algorithm. Initial empirical results are also presented. >

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

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

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

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

[5]  Williams Ludwell Harrison,et al.  The Design of Automatic Parallelizers for Symbolic and Numeric Programs , 1989, Workshop on Parallel Lisp.

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

[7]  Jong-Deok Choi,et al.  Pointer-induced aliasing: a clarification , 1993, SIGP.

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

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

[10]  Mary Lou Soffa,et al.  Selecting and using data for integration testing , 1991, IEEE Software.

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

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

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

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

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

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

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

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

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

[20]  Mark Weiser,et al.  Program Slicing , 1981, IEEE Transactions on Software Engineering.

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

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

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

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

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

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

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

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

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

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

[31]  William Landi,et al.  Interprocedural Def-Use associations in C programs , 1991, TAV4.

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

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

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

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

[36]  Elaine J. Weyuker,et al.  An Applicable Family of Data Flow Testing Criteria , 1988, IEEE Trans. Software Eng..

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

[38]  Barbara G. Ryder,et al.  Static Type Determination for C++ , 1994, C++ Conference.

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

[40]  Barbara G. Ryder,et al.  Profiling an Incremental Data Flow Analysis Algorithm , 1990, IEEE Trans. Software Eng..

[41]  Jong-Deok Choi,et al.  Precise and efficient integration of interprocedural alias information into data-flow analysis , 1992, LOPL.

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

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

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

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

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

[47]  Tarak Goradia Dynamic impact analysis: a cost-effective technique to enforce error-propagation , 1993, ISSTA '93.

[48]  Alexandru Nicolau,et al.  Abstractions for recursive pointer data structures: improving the analysis and transformation of imperative programs , 1992, PLDI '92.

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

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

[51]  Barbara G. Ryder,et al.  A safe approximate algorithm for interprocedural aliasing , 1992, PLDI '92.

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