You are on page 1of 12

Dominators and CFGs

Dominators

Node (basic block) D in a CFG dominates node N if


every path from the start node to N goes through D.
We say that node D is a dominator of node N.

Define dom(N) = set of node N’s dominators, or the


dominator set for node N.

Note: by definition, each node dominates itself i.e., N


 dom(N).
An Example
Domination relation:
{ (1, 1), (1, 2), (1, 3), (1, 4) …
1 S
(2, 3), (2, 4), …
(2, 10) 2
}
3
Direct domination: 4

1 <d 2, 2 <d 3, … 5

6 7
DOM:
8
DOM(1) = {1}
DOM(2) = {1, 2} 9
DOM(3) = {1, 2, 3} 10
DOM(10) = {1, 2, 10)
Immediate Dominators and
Dominator Tree

Node M is the immediate dominator of node N ==>


Node M must be the last dominator of N on any path
from the start node to N.

Therefore, every node other than the start node must


have a unique immediate dominator (the start node has
no immediate dominator.)

What does this mean ?


Dominator Tree

1 S

2
1
3
2
4
3 10
5
4
6 7
5
9
8
6 7 8
9

10

A flowgraph (left) and its dominator tree (right)


Question

Assume an immediate dominator n’ of a


node n, is n’ necessarily an immediate
predecessor in the flow graph?
Answer: NO!

Example: consider nodes 5 and 8.


An Example (Dominators)
1

5 6

9 10
Depth-First Search (DFS)

An “ordering” of nodes of CFG


BBs dfs_nums 1..N
Each BB dfs_num represents when that
BB first encountered in DFS

Write dfs(BB root);


DFS and Depth-First Order

CONFUSING: They are NOT the same


DFS as defined: order of first visitation during
depth-first search
Depth-First Order
“The depth-first ordering of the nodes is the reverse
of the order in which we last visit the nodes in a
preorder traversal” (Aho-Sethi-Ullman)
Used (sometimes) to identify loops
Later …
An Example DFS
1

5 6

9 10

You might also like