Control dependence information is useful for a wide range of software maintenance and testing tasks. For example, program slicers use it to determine statements and predicates that might affect the value of a particular variable at a particular program location. In the intraprocedural context an optimal algorithm is known for computing control dependence which unfortunately relies critically on the underlying intraprocedural postdominance relation being tree-structured. Hence, this algorithm is not directly applicable to the interprocedural case, where the transitive reduction of the postdominance relation can be a directed acyclic graph (DAG), with nodes having multiple immediate dominators. In this paper, we present an efficient, conceptually simple algorithm for computing the interprocedural postdominance relation, and use it to compute interprocedural control dependence. For an interprocedural control flow graph G = (V; E), our algorithm takes time and space O(jV j
|
689
|
The program dependence graph and its use in optimization
– Ferrante, Ottenstein, et al.
- 1987
|
|
658
|
Efficiently computing static single assignment form and the control dependence graph
– Cytron, Ferrante, et al.
- 1991
|
|
576
|
Trace Scheduling: A Technique for Global Microcode Compaction
– Fisher
- 1981
|
|
540
|
Interprocedural slicing using dependence graphs
– Horwitz, Reps, et al.
- 1988
|
|
252
|
Precise interprocedural dataflow analysis via graph reachability
– Reps, Horowitz, et al.
- 1995
|
|
237
|
The program dependence graph in a software development environment
– Ottenstein, Ottenstein
- 1984
|
|
231
|
Two approaches to interprocedural data flow analysis
– Sharir, Pnueli
- 1981
|
|
219
|
Integrating non-interfering versions of programs
– Horowitz, Prins, et al.
- 1988
|
|
120
|
Global instruction scheduling for superscalar machines
– Bernstein, Rodeh
- 1991
|
|
114
|
L.: A formal model of program dependences and its implications for software testing, debugging, and maintenance
– Podgurski, Clarke
- 1990
|
|
110
|
Automatic construction of sparse data flow evaluation graphs
– Choi, Cytron, et al.
- 1991
|
|
110
|
A fast algorithm for finding dominators in a flowgraph
– Lengauer, Tarjan
- 1979
|
|
45
|
Incremental data flow analysis algorithms
– Ryder, Paull
- 1988
|
|
40
|
Slicing objects using system dependence graphs
– Liang, Harrold
- 1998
|
|
39
|
The program structure tree: Computing control regions in linear time
– Johnson, Pearson, et al.
- 1994
|
|
37
|
An Incremental Version of Iterative Data Flow Analysis
– Pollock, Soffa
- 1989
|
|
29
|
Interprocedural control dependence
– Sinha, Harrold, et al.
- 2001
|
|
28
|
Using Dependence Analysis to Support the Software Maintenance Process
– Loyall, Mathisen
- 1993
|
|
25
|
Linear-time pointermachine algorithms for least common ancestors, mst verification, and dominators
– Buchsbaum, Kaplan, et al.
- 1998
|
|
22
|
A framework for generalized control dependences
– Bilardi, Pingali
- 1996
|
|
21
|
A Framework for Determining Useful Parallelism
– Allen, Burke, et al.
- 1988
|
|
21
|
Compact representations for control dependence
– Cytron, Ferrante, et al.
- 1990
|
|
18
|
Region Scheduling
– Gupta, Soffa
- 1987
|
|
7
|
Parallelizing data flow analysis
– Gupta, Pollock, et al.
- 1990
|
|
7
|
Efficient Program Analysis Using Dependence Flow Graphs
– Johnson
- 1994
|
|
6
|
Systemdependence -graph-based slicing of programs with arbitrary interprocedural control flow
– Sinha, Harrold, et al.
- 1999
|
|
5
|
A foundation for sequentializing parallel code
– Simons, Alpern, et al.
- 1990
|
|
5
|
The SUIF Library. The SUIF compiler documentation set
– Group
- 1994
|
|
4
|
A PDG-based tool and its use in analyzing program control dependences
– Newburn, Noonburg, et al.
- 1994
|
|
2
|
Optimal control dependence and the roman chariots problem
– Pingali, Bilardi
- 1997
|
|
1
|
The MachSUIF library. The MachSUIF documentation set
– Group
- 1997
|