Efficient computation of interprocedural definition-use chains
- 1 March 1994
- journal article
- Published by Association for Computing Machinery (ACM) in ACM Transactions on Programming Languages and Systems
- Vol. 16 (2) , 175-204
- https://doi.org/10.1145/174662.174663
Abstract
The dependencies that exist among definitions and uses of variables in a program are required by many language-processing tools. This paper considers the computation of definition-use and use-definition chains that extend across procedure boundaries at call and return sites. Intraprocedural definition and use information is abstracted for each procedure and is used to construct an interprocedural flow graph. This intraprocedural data-flow information is then propagated throughout the program via the interprocedural flow graph to obtain sets of reaching definitions and/or reachable uses for reach interprocedural control point, including procedure entry, exit, call, and return. Interprocedural definition-use and/or use-definition chains are computed from this reaching information. The technique handles the interprocedural effects of the data flow caused by both reference parameters and global variables, while preserving the calling context of called procedures. Additionally, recursion, aliasing, and separate compilation are handled. The technique has been implemented using a Sun-4 Workstation and incorporated into an interprocedural data-flow tester. Results from experiments indicate the practicality of the technique, both in terms of the size of the interprocedural flow graph and the size of the data-flow sets.Keywords
This publication has 9 references indexed in Scilit:
- Selecting and using data for integration testingIEEE Software, 1991
- An interval-based approach to exhaustive and incremental interprocedural data-flow analysisACM Transactions on Programming Languages and Systems, 1990
- Interprocedural slicing using dependence graphsACM Transactions on Programming Languages and Systems, 1990
- An applicable family of data flow testing criteriaIEEE Transactions on Software Engineering, 1988
- Interprocedural side-effect analysis in linear timePublished by Association for Computing Machinery (ACM) ,1988
- The impact of interprocedural analysis and optimization in the R n programming environmentACM Transactions on Programming Languages and Systems, 1986
- A practical interprocedural data flow analysis algorithmCommunications of the ACM, 1978
- Data Flow Analysis in the Presence of Procedure CallsIBM Journal of Research and Development, 1977
- Global Data Flow Analysis and Iterative AlgorithmsJournal of the ACM, 1976