What is a Dominator
In a control flow graph , node is said to dominate node if every path from START
to contains .
Dominance Properties
- Reflexive:
- Anti-symmetric: and
- Transitive:
- Tree-structured:
- Intuitively, this means that dominators of a node are themselves ordered by dominance
Dominance Relation: relation on nodes
We write if dominates .
Computing Dominance Relation
The domain of this relation is the power set of nodes in the CFG.
There is a dataflow problem. If we have a node with multiple inputs, how do we get dataflow information.
.
Example CFG
graph TD A[START] --> B(a) B --> C(b) C --> D(c) D --> E{d} D --> F{e} E --> G(f) F --> G G --> C B --> D G --> H(g) H --> I[END] A --> I
Start | A | B | C | D | E | F | G | END | |
---|---|---|---|---|---|---|---|---|---|
Start | x | x | x | x | x | x | x | x | x |
A | x | x | x | x | x | x | x | ||
B | x | ||||||||
C | x | x | x | x | x | ||||
D | x | ||||||||
E | x | ||||||||
F | x | x | |||||||
G | x | ||||||||
END | x |
Building Dominator Tree Directly
Based on depth-first-search (DFS) of graph.
where is the number of edges in a CFG.
This runs in essentially linear time (the inverse Ackermann function grows incredibly slowly).
There is a linear time algorithm, but its a lot more complex and not efficient to implement for extremely large graphs.
Immediate Dominators
The immediate dominator of a node is the parent of the node on all paths, if it exists.
- Denoted as
- There is no for
START
As a result, all dominators of other than itself dominate .
Postdominators
Given a CFG , node is said to postdominate node if every path from to END
contains
- Denoted as to say that postdominates
Postdominance is dominance in reverse CFGs obtained by reversing the direction of all edges and interchanging the roles of START
and END
.
There is a caveat: does not necessarily imply .
Immediate Postdominator
The immediate post-dominator of a node is the child of the node on all paths, if it exists.
- Denoted as .
Strict Postdominance
A node is said to strictly postdominate a node if