Program dependence information is useful for a variety of software testing and maintenance tasks. Properly defined, control and data dependencies can be used to identify semantic dependencies. To function effectively on whole programs, tools that utilize dependence information require information about interprocedural dependencies: dependencies that exist because of interactions among procedures. Many techniques for computing data and control dependencies exist; however, in our search of the literature we find only one attempt to define and compute interprocedural control dependencies. Unfortunately, that approach can omit important control dependencies, and incorrectly identifies control dependencies for a large class of programs. This paper presents a definition of interprocedural control dependence that supports the relationship of control and data dependence to semantic dependence, an efficient algorithm for calculating interprocedural control dependencies, and empirical results obtained by our implementation of the algorithm.
|
672
|
The program dependence graph and its use in optimization
– Ferrante, Ottenstein, et al.
- 1987
|
|
639
|
Efficiently Computing Static Single Assignment Form and the Control Dependence Graph
– Cytron, Ferrante, et al.
- 1991
|
|
329
|
Context-sensitive interprocedural points-to analysis in the presence of function pointers
– Enami, Ghiya, et al.
- 1994
|
|
301
|
A safe approximate algorithm for interprocedural pointer aliasing
– Landi, Ryder
- 1992
|
|
234
|
Precise interprocedural dataflow analysis via graph reachability
– Reps, Sagiv, et al.
- 1995
|
|
216
|
Two approaches to interprocedural data flow analysis
– Sharir, Pnueli
- 1981
|
|
215
|
Intergrating Noninterfering Version of Programs
– Horwitz, Reps, et al.
- 1989
|
|
120
|
Experiments on the effectiveness of dataflow- and control-flow-based test adequacy criteria
– Hutchins, Foster, et al.
- 1994
|
|
108
|
A formal model of program dependences and its implications for software testing, debugging, and maintenance
– Podgurski, Clarke
- 1990
|
|
104
|
Complexity of interprocedural side-effect analysis
– Cooper, Kennedy
- 1987
|
|
97
|
A safe, efficient regression test selection technique
– Rothermel, Harrold
- 1997
|
|
61
|
The design of whole-program analysis tools
– Atkinson, Griswold
- 1996
|
|
58
|
Lightweight lexical source model extraction
– Murphy, Notkin
- 1996
|
|
56
|
Aristotle: A system for research on and development of program-analysis based tools
– Harrold, Rothermel
- 1997
|
|
54
|
Efficient computation of interprocedural definition-use chains
– Harrold, Soffa
- 1994
|
|
44
|
Incremental data flow analysis algorithms
– Ryder, Paull
- 1988
|
|
42
|
Precise Interprocedural Chopping
– Reps, Rosay
- 1995
|
|
40
|
Experiments on the effectiveness of dataflow-and control-flow-based test adequacy criteria
– Hutchins, Foster, et al.
- 1994
|
|
40
|
System-dependence-graph-based slicing of programs with arbitrary interprocedural control flow
– SINHA, HARROLD, et al.
- 1999
|
|
38
|
Using semantic differencing to reduce the cost of regression testing
– Binkley
- 1992
|
|
35
|
Reuse-driven interprocedural slicing
– Harrold, Ci
- 1998
|
|
33
|
An incremental version of iterative data flow analysis
– Pollock, Soffa
- 1989
|
|
33
|
Eciently computing static single assignment form and the control dependence graph
– Cytron, Ferrante, et al.
- 1991
|
|
29
|
Analysis and testing of programs with exception-handling constructs
– SINHA, J
|
|
28
|
Interprocedural Def-Use Associations in C Programs
– Pande, Landi, et al.
- 1994
|
|
27
|
Syntax-directed construction of program dependence graphs
– Harrold, Rothermel
- 1996
|
|
26
|
Using dependence analysis to support the software maintenance process
– Loyall, Mathisen
- 1993
|
|
26
|
Interprocedural path profiling
– Melski, Reps
- 1999
|
|
21
|
A framework for generalized control dependence
– Bilardi, Pingali
- 1996
|
|
18
|
Precise Interprocedural Data Analysis via Graph Reachability
– Reps, Horwitz, et al.
- 1995
|
|
17
|
Optimal control dependence computation and the Roman Chariots problsm
– Pingali, Bilardi
- 1997
|
|
17
|
The Significance of Program Dependences for Software Testing, Debugging, and Maintenance
– Podgurski
- 1989
|
|
12
|
Two approaches to interprocedural data analysis
– Sharir, Pnueli
- 1981
|
|
11
|
Program dependence graphs for the rest of us
– Ballance, Maccabe
- 1992
|
|
9
|
Experiments on the eectiveness of data and control test adequacy criteria
– Hutchins, Foster, et al.
- 1994
|
|
8
|
Using semantic di erencing to reduce the cost of regression test
– Binkley
- 1992
|
|
4
|
Incremental data analysis algorithms
– Ryder, Paull
- 1988
|
|
3
|
Ecient Computation of Interprocedural De Chains
– Harrold, Soa
- 1994
|
|
2
|
An incremental version of iterative data analysis
– Pollock, Soffa
- 1989
|
|
2
|
An incremental version of iteractive data flow analysis
– POLLOCK, SOFFA
- 1989
|