Foundations of Dataflow Analysis
Terminology: Program Representation e
- ogy:
- g a
ep ese tat o
Control Flow Graph: Control Flow Graph:
– Nodes N – statements of program – Edges E – flow of control
- pred(n) = set of all immediate predecessors of n
p ( ) p
- succ(n) = set of all immediate successors of n
– Start node n0 Start node n0 – Set of final nodes Nfinal
Terminology: Control-Flow Graph Terminology: Control Flow Graph
A Control-flow graph (CFG)
m ← a + b n ← a + b
A B C g p ( )
- Nodes for basic blocks
- Edges for branches
p ← c + d r ← c + d
B
q ← a + b r ← c + d
C
e ← b + 18
D
e ← a + 17
E
- Basis for much of program
analysis & transformation
e ← b + 18 s ← a + b u ← e + f
D
e ← a + 17 t ← c + d u ← e + f
E F
v ← a + b w ← c + d x ← e + f
F This CFG, G = (N,E)
- N = {A,B,C,D,E,F,G}
y ← a + b z ← c + d
G
- E = {(A,B),(A,C),(B,G),(C,D),
(C,E),(D,F),(E,F),(F,E)}
- |N| = 7, |E| = 8
Terminology: Extended Basic Block Terminology: Extended Basic Block
m ← a + b n ← a + b
A
EBB: Conceptually it is a program sequence with
n ← a b p ← c + d r ← c + d
B
q ← a + b r ← c + d
C
program sequence with
- nly one entry point but
possibly several exit points.
e ← b + 18 s ← a + b f
D
e ← a + 17 t ← c + d f
E
u ← e + f u ← e + f v ← a + b w ← c + d
F
Extended Basic Block (EBB): A sequence of basic blocks B1, B2, …, Bn where all Bi (i > 1) h i d
y ← a + b ← + d
G
x ← e + f
have a unique predecessor from the set B1, …, Bi-1 .
z ← c + d
P th f EBB A f b i bl k Path of an EBB: A sequence of basic blocks B1, B2, …, Bn where Bi is the predecessor of Bi+1.