Title: Topic 4: Flow Analysis
1Topic 4 Flow Analysis
Some slides come from Prof. J. N. Amaral
(amaral_at_cs.ualberta.ca)
2Topic 4 Flow Analysis
- Motivation
- Control flow analysis
- Dataflow analysis
- Advanced topics
3Reading List
- Slides
- Dragon book chapter 8.4, 8.5, Chapter 9
- Muchnicks book Chapter 7
- Other readings as assigned in class or homework
4Flow Analysis
Control flow analysis
Interprocedural
Program
Intraprocedural
Procedure
Flow analysis
Data flow analysis
Local
Basic block
- Control Flow Analysis - Determine control
structure of a program and build a Control Flow
Graph. - Data Flow analysis - Determine the flow of scalar
values and ceretain associated properties - Solution to the Flow analysis Problem
propagation of data flow information along a flow
graph.
5Introduction to Code Optimizations
- Code optimization - a program transformation
that preserves correctness and improves the
performance (e.g., execution time, space, power)
of the input program. Code optimization may be
performed at multiple levels of program
representation - 1. Source code
- 2. Intermediate code
- 3. Target machine code
- Optimized vs. optimal - the term optimized is
used to indicate a relative performance
improvement.
6Motivation
- S1 A 2 (def of A)
- S2 B 10 (def of B)
- S3 C A B determine if C is a constant 12?
- S4 Do I 1, C
- AI BI DI-1
. . .
7Basic Blocks
A basic block is a sequence of consecutive
intermediate language statements in which flow
of control can only enter at the beginning and
leave at the end.
- Only the last statement of a basic block can be
a branch statement and only the first statement
of a basic block can be a target of a branch.
However, procedure calls may need be treated with
care within a basic block (Procedure call starts
a new basic block)
(AhoSethiUllman, pp. 529)
8Basic Block Partitioning Algorithm
- 1. Identify leader statements (i.e. the first
statements of basic blocks) by using the
following rules - (i) The first statement in the program is a
leader - (ii) Any statement that is the target of a
branch statement is a leader (for most ILs.
these are label statements) - (iii) Any statement that immediately follows a
branch or return statement is a leader - 2. The basic block corresponding to a leader
consists of the leader, and all statements up to
but not including the next leader or up to the
end of the program.
9Example
The following code computes the inner product of
two vectors.
- (1) prod 0
- (2) i 1
- (3) t1 4 i
- (4) t2 at1
- (5) t3 4 i
- (6) t4 bt3
- (7) t5 t2 t4
- (8) t6 prod t5
- (9) prod t6
- (10) t7 i 1
- (11) i t7
- if i lt 20 goto (3)
- (13)
begin prod 0 i 1 do begin
prod prod ai bi i i 1
end while i lt 20 end
Source code.
Three-address code.
10Example
The following code computes the inner product of
two vectors.
(1) prod 0 (2) i 1 (3) t1 4
i (4) t2 at1 (5) t3 4 i (6) t4
bt3 (7) t5 t2 t4 (8) t6 prod
t5 (9) prod t6 (10) t7 i 1 (11) i
t7 (12) if i lt 20 goto (3) (13)
Rule (i)
begin prod 0 i 1 do begin
prod prod ai bi i i 1
end while i lt 20 end
Source code.
Three-address code.
11Example
The following code computes the inner product of
two vectors.
Rule (i)
(1) prod 0 (2) i 1 (3) t1 4
i (4) t2 at1 (5) t3 4 i (6) t4
bt3 (7) t5 t2 t4 (8) t6 prod
t5 (9) prod t6 (10) t7 i 1 (11) i
t7 (12) if i lt 20 goto (3) (13)
begin prod 0 i 1 do begin
prod prod ai bi i i 1
end while i lt 20 end
Rule (ii)
Source code.
Three-address code.
12Example
The following code computes the inner product of
two vectors.
(1) prod 0 (2) i 1 (3) t1 4
i (4) t2 at1 (5) t3 4 i (6) t4
bt3 (7) t5 t2 t4 (8) t6 prod
t5 (9) prod t6 (10) t7 i 1 (11) i
t7 (12) if i lt 20 goto (3) (13)
Rule (i)
begin prod 0 i 1 do begin
prod prod ai bi i i 1
end while i lt 20 end
Rule (ii)
Rule (iii)
Source code.
Three-address code.
13Example
B1
(1) prod 0 (2) i 1
(3) t1 4 i (4) t2 at1 (5) t3 4
i (6) t4 bt3 (7) t5 t2 t4 (8)
t6 prod t5 (9) prod t6 (10) t7 i
1 (11) i t7 (12) if i lt 20 goto (3)
B2
Basic Blocks
B3
(13)
14Transformations on Basic Blocks
- Structure-Preserving Transformations
- common subexpression elimination
- dead code elimination
- renaming of temporary variables
- interchange of two independent adjacent
statements - Others
15Transformations on Basic Blocks
- The DAG representation of a basic block lets
compiler perform the code-improving
transformations on the codes represented by the
block.
16Transformations on Basic Blocks
- Algorithm of the DAG construction for a basic
block - Create a node for each of the initial values
of the variables in the basic block - Create a node for each statement s, label
the node by the operator in the statement s, and
attach the list of variables for which it is the
last definition in the basic block. - The children of a node N are those nodes
corresponding to statements that are last
definitions of the operands used in the statement
associated with node N.
Tiger book pp533
17An Example of Constructing the DAG
- Step
(1) create node 4 and i0 - Step (2) create node
- Step
(3) attach identifier t1 -
- Step (1) create
nodes labeled , a - Step (2) find previously node(t1)
- Step (3) attach label
-
- Here we determine that
- node (4) was created
- node (i) was created
- node () was created
t1 4i t2 at1 t3 4i
t1
i0
4
t2
t1,t3
a0
i0
4
just attach t3 to node
18Example of Common Subexpression Elimination
c
a b c b a d c b c d b
- a b c
- b a d
- c b c
- d a - d
b,d
-
d0
a
c0
b0
If a node N represents a common subexpression, N
has more than one attached variables in the DAG.
- Detection
- Common subexpressions can be detected by
noticing, as a new node m is about to be added,
whether there is an existing node n with the same
children, in the same order, and with the same
operator. - if so, n computes the same value as m and may be
used in its place.
19Example of Dead Code Elimination
if x is never referenced after the statement x
yz, the statement can be safely eliminated.
20Example of Renaming Temporary Variables
rename
(1) t b c (1) u b c
t
u
Change (rename) label
b0
c0
b0
c0
if there is an statement t b c, we can
change it to u b c and change all uses of t
to u.
a code in which each temporary is defined only
once is called a single assignment form.
21Example of Interchange of Statements
t1
t2
b0
c0
x0
y0
- Observation
- We can interchange the statements without
affecting the value of the block if and only if
neither x nor y is t1 and neither b nor c is t2,
i.e. we have two DAG subtrees.
22Example of Algebraic Transformations
- Arithmetic Identities
- x 0 0 x x
- x 0 x
- x 1 1 x x
- x / 1 x
- - Replace left-hand side with simples right
hand side. - Associative/Commutative laws
- x (y z) (x y) z
- x y y x
- Reduction in strength
- x 2 x x
- 2.0 x x x
- x / 2 x 0.5
- - Replace an expensive operator with a cheaper
one. - Constant folding
- 2 3.14 6.28
- -Evaluate constant expression at compile time
23Control Flow Graph (CFG)
- A control flow graph (CFG), or simply a flow
graph, is a directed multigraph in which the
nodes are basic blocks and edges represent flow
of control (branches or fall-through execution). - The basic block whose leader is the first
statement is called the initial node or start
node - There is a directed edge from basic block B1
to basic B2 in the CFG if - (1) There is a branch from the last statement of
B1 to the first - statement of B2, or
- (2) Control flow can fall through from B1 to B2
because B2 - immediately follows B1, and B1 does not
end with an - unconditional branch
24Example
(1) prod 0 (2) i 1
B1
Control Flow Graph
Rule (2)
(3) t1 4 i (4) t2 at1 (5) t3 4
i (6) t4 bt3 (7) t5 t2 t4 (8)
t6 prod t5 (9) prod t6 (10) t7 i
1 (11) i t7 (12) if i lt 20 goto (3)
B2
B1
B2
B3
Rule (1)
Rule (2)
(13)
B3
25CFGs are Multigraphs
Note there may be multiple edges from one basic
block to another in a CFG. Therefore, in
general the CFG is a multigraph. The edges are
distinguished by their condition labels. A
trivial example is given below
101 . . . 102 if i gt n goto L1
Basic Block B1
False
True
103 label L1 104 . . .
Basic Block B2
26Identifying loops
Question Given the control flow graph of a
procedure, how can we identify loops?
Answer We use the concept of dominance.
27Dominators
- 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 Ns dominators, or
the dominator set for node N. - Note by definition, each node dominates itself
i.e., N ? DOM(N).
28Domination Relation
- Definition Let G (N, E, s) denote a
flowgraph. - and let n, n ? N.
- 1. n dominates n, written n ? n
- each path from s to n contains n.
- 2. n properly dominates n, written n lt n
- n ? n and n ? n.
- 3. n directly (immediately) dominates n, written
n ltd n - n lt n and
- there is no m ? N such that n lt m lt
n. - 4. DOM(n) n n ? n is the set of
dominators of n.
29Domination Property
- The domination relation is a partial ordering
- Reflexive
- A ? A
- Antisymmetric
- A ? B B ? A
- Transitive
- A ? B and B ? C A ? C
30Computing Dominators
Observe if a dominates b, then a b, or a
is the only immediate predecessor of b, or b
has more than one immediate predecessor, all of
which are dominated by a.
DOM(b) b U n DOM(p)
p ? pred(b)
Quiz why here is the intersection operator
instead of the union?
31An Example
(1, 1), (1, 2), (1, 3), (1, 4) (2, 3),
(2, 4), (2, 10)
S
1
2
3
Direct domination
4
1 ltd 2, 2 ltd 3,
5
6
7
DOM
8
DOM(1) 1 DOM(2) 1, 2 DOM(10)
1, 2, 10
9
10
DOM(8) ?
DOM(8) 1,2,3,4,5,8
32Question
- Assume node m is an immediate dominator of a
node n, is m necessarily an immediate predecessor
of n in the flow graph? -
S
1
2
3
4
5
6
7
Answer NO!
Example consider nodes 5 and 8.
8
9
10
33Dominance Intuition
S
Imagine a source of light at the start node, and
that the edges are optical fibers
1
2
3
4
5
To find which nodes are dominated by a given
node a, place an opaque barrier at a and
observe which nodes became dark.
6
7
8
9
10
34Dominance Intuition
S
The start node dominates all nodes in the
flowgraph.
1
2
3
4
5
6
7
8
9
10
35Dominance Intuition
S
1
Which nodes are dominated by node 3?
2
3
4
5
6
7
8
9
10
36Dominance Intuition
S
1
Which nodes are dominated by node 3?
2
3
4
Node 3 dominates nodes 3, 4, 5, 6, 7, 8, and 9.
5
6
7
8
9
10
37Dominance Intuition
S
1
Which nodes are dominated by node 7?
2
3
4
5
6
7
8
9
10
38Dominance Intuition
S
1
Which nodes are dominated by node 7?
2
3
4
5
Node 7 only dominates itself.
6
7
8
9
10
39Immediate Dominators and Dominator Tree
- Node M is the immediate dominator of node N gt
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 ?
40A Dominator Tree
A dominator tree is a useful way to represent the
dominance relation. In a dominator tree the
start node s is the root, and each node d
dominates only its descendants in the tree.
41Dominator Tree (Example)
A flowgraph (left) and its dominator tree (right)
42Natural Loops
- Back-edges - an edge (B, A), such that
- A lt B (A properly dominates B).
- Header --A single-entry node which dominates
all nodes in a subgraph. - Natural loops given a back edge (B, A), a
natural loop of (B, A) with entry node A is the
graph A plus all nodes which is dominated by A
and can reach B without going through A.
43Find Natural Loops
One way to find natural loops is
start
1) find a back edge (b,a)
a
2) find the nodes that are dominated by a.
3) look for nodes that can reach b among the
nodes dominated by a.
b
44Algorithm to finding Natural Loops
Input A flow graph G and a back edge n -gt
d Output the natural loop of n -gtd Initial a
loop L with nodes n and d Ln, d Mark d as
visible so that the following search does not
reach beyond d Perform a depth-first search on
the revise control-flow graph starting with node
n Insert all the nodes visited in this search
into loop L.
- - Alg. 9.46 (Aho et. al., pp665)
45An Example
Find all back edges in this graph and the natural
loop associated with each back edge
1
2
3
Back edge
Natural loop
4
6
5
7
8
10
9
46An Example
Find all back edges in this graph and the natural
loop associated with each back edge
1
2
3
Back edge
Natural loop
(9,1)
Entire graph
4
6
5
7
8
10
9
47An Example
Find all back edges in this graph and the natural
loop associated with each back edge
1
2
3
Back edge
Natural loop
(9,1)
Entire graph
4
6
5
7
8
10
9
48An Example
Find all back edges in this graph and the natural
loop associated with each back edge
1
2
3
Back edge
Natural loop
(9,1)
Entire graph
4
6
5
7
8
10
9
49An Example
Find all back edges in this graph and the natural
loop associated with each back edge
1
2
3
Back edge
Natural loop
(9,1)
Entire graph
4
(10,7)
7,8,10
6
5
7
8
10
9
50An Example
Find all back edges in this graph and the natural
loop associated with each back edge
1
2
3
Back edge
Natural loop
(9,1)
Entire graph
4
(10,7)
7,8,10
6
5
7
8
10
9
51An Example
Find all back edges in this graph and the natural
loop associated with each back edge
1
2
3
Back edge
Natural loop
4
(9,1)
Entire graph
6
5
(10,7)
7,8,10
7
(7,4)
8
10
9
52An Example
Find all back edges in this graph and the natural
loop associated with each back edge
1
2
3
Back edge
Natural loop
4
6
5
(9,1)
Entire graph
(10,7)
7,8,10
7
(7,4)
4,5,6,7,8,10
8
10
9
53An Example
Find all back edges in this graph and the natural
loop associated with each back edge
1
2
3
Back edge
Natural loop
4
(9,1)
Entire graph
6
5
(10,7)
7,8,10
7
(7,4)
4,5,6,7,8,10
(8,3)
8
10
9
54An Example
Find all back edges in this graph and the natural
loop associated with each back edge
1
2
3
Back edge
Natural loop
4
(9,1)
Entire graph
6
5
(10,7)
7,8,10
7
(7,4)
4,5,6,7,8,10
(8,3)
8
10
9
55An Example
Find all back edges in this graph and the natural
loop associated with each back edge
1
2
3
Back edge
Natural loop
4
(9,1)
Entire graph
6
5
(10,7)
7,8,10
7
(7,4)
4,5,6,7,8,10
(8,3)
3,4,5,6,7,8,10
8
10
9
56An Example
Find all back edges in this graph and the natural
loop associated with each back edge
1
2
3
Back edge
Natural loop
4
(9,1)
Entire graph
6
5
(10,7)
7,8,10
7
(7,4)
4,5,6,7,8,10
(8,3)
3,4,5,6,7,8,10
8
(4,3)
10
9
57An Example
Find all back edges in this graph and the natural
loop associated with each back edge
1
2
3
Back edge
Natural loop
4
(9,1)
Entire graph
6
5
(10,7)
7,8,10
7
(7,4)
4,5,6,7,8,10
(8,3)
3,4,5,6,7,8,10
8
(4,3)
10
9
58An Example
Find all back edges in this graph and the natural
loop associated with each back edge
1
2
3
Back edge
Natural loop
4
(9,1)
Entire graph
6
5
(10,7)
7,8,10
7
(7,4)
4,5,6,7,8,10
(8,3)
3,4,5,6,7,8,10
8
(4,3)
3,4,5,6,7,8,10
10
9
59Reducible Flow Graphs
- Def a CFG V, E is reducible iff E can be
partitioned into two classes - 1. Forward edges form an acyclic graph where
every node is reachable from the initial node - 2. Back edges
- Motivation Structured programs always
reducible - (note programs with gotos are still often
reducible) - Intuition No jumps into the middle of loops.
60How to check if a graph G is reducible?
- Step1 compute dom relation
- Step2 identify all back edges
- Step3 remove all back edges and derive G
- Step4 check if G is acyclic
- Example
Bad cycle can be entered from 2 different
places
1
2
3
61Loops in Reducible Flow Graphs
- Intuitive no bad loops.
- In fact, all loops in structured programs are
natural loops - In practice
- Structured programs only produce reducible graphs.
62More About Loops
- Read the following slides and think?
63Region and Loop
A region is a set of nodes N that include a
header with the following properties (i) the
header must dominate all the nodes in the
region (ii) All the edges between nodes in N are
in the region (except for some edges that enter
the header)
A loop is a special region that has the following
additional properties (i) it is strongly
connected (ii) All back edges to the header are
included in the loop
64Loops in Control Flow Graphs
- Motivation Programs spend more time in loops, so
there is a larger payoff from optimizations that
exploit loop structure e.g., loop-invariant code
motion, software pipelining, etc. -
- Basic idea Identify regions (subgraphs) of the
CFG that correspond to program loops. Use a
general approach based on analyzing
graph-theoretical properties of the CFG - uniform
treatment for program loops written using
different loop structures (e.g. while, for) and
loops constructed out of gotos.
65Relation of Flowgraph and Loop A Definition
A strongly-connected component (SCC) of a
flowgraph G (N, E, s) is a subgraph G
(N, E, s) in which there is a path from
each node in N to every node in N.
- A strongly-connected component G (N, E, s)
of a flowgraph G (N, E, s) is a loop with entry
s if s dominates all nodes in N.
66A Strongly-Connected Graph But Not a Loop
- Counter-example not every strongly connected
graph is a loop -- see the subgraph consists of
nodes 2 ad 3
1
2
3
Why?
No node in the subgraph dominates all the other
nodes.