PPT

advertisement
CS 201
Compiler Construction
Data Flow Framework
1
Data Flow Framework
The various problems considered have things
in common:
– Transfer functions
– Confluence Operator
– Direction of Propagation
These problems can be treated in a unified
way  data flow framework is an algebraic
structure used to encode and solve data
flow problems.
2
Monotone Data Flow Framework
Components of the framework:
1. Information Set: L
2. Effect of joining paths: ∧ (meet operator)
3. Effect of basic blocks: fn (monotone transfer func.)
4. Iterative Solution: can be shown to terminate
(L,∧) is a semilattice st ∨ a,b,c εL
1.a ∧ a = a (idempotent)
2.a ∧ b = b ∧ a (commutative)
3.a ∧ (b ∧ c) = (a ∧ b) ∧ c (assocative)
Bottom Element
st ∨ a ε L, a ∧
=
Top Element
Τ st ∨ a ε L, a ∧ Τ = a
If top & bottom elements exist, they are unique.
3
Contd..
≤ is a partial order on L
a≤b≅ a ∧ b = a
Can similarly define <, >, ≥ relations
Relation
A semilattice is bounded iff
∨ a εL there exists a constant ca
st length of chain beginning at a is at
most ca.
Max ca
4
Monotonic Functions
Effect of each basic block is modeled by a transfer
function f: L  L. Function f must be monotonic.
A total function f: LL is monotonic iff ∨ a,b ε L
f(a∧b) ≤ f(a) ∧ f(b)
Distributive function:
For monotonic functions:
f(a∧b) = f(a) ∧ f(b)
a ≤ b => f(a) ≤ f(b)
5
Contd..
For monotonic functions:
a ≤ b => f(a) ≤ f(b)
Proof:
f(a∧b) ≤ f(a) ∧ f(b)
Defn. of Monotonicity
f(a∧b)∧f(a)∧f(b) = f(a∧b)
Defn. of ≤:(a∧b=a)
f(a)∧f(a)∧f(b)= f(a)
Given a ≤ b: a ∧ b = a
f(a) ∧ f(b) = f(a)
f(a)∧f(a) = f(a) idempotence
f(a) ≤ f(b)
Defn. of ≤
6
Fixpoint
A fixpoint of a monotonic function f: L  L is a value
a ε L such that f(a) = a
Τ > f (Τ) > f ( f (Τ) ) > f ( f ( f (Τ) ) ) ……..
There exists t such that f ( ft (Τ) ) = ft (Τ)
ft (Τ) is the greatest fixpoint of f.
7
Monotone Function Space
A monotone function space for a semilattice is a set F
of monotonic functions which:
1. Contains the identity function (id)
-- basic blocks may not modify information
2. Is closed under function composition
-- to model the effects of paths
3. For each a ε L, there exists fεF st f( ) = a
-- to model gen functions
A distributive function space is a monotone function
space in which all functions are distributive.
8
A Monotone Data Flow System
A monotone data flow system is a tuple
< L, ∧, F, G, FM >
1. (L,∧) is a bounded semilattice with Τ &
2. F is the monotone function space
3. G = (N, E, s) is the program flow graph
4. FM: N  F is a total function that associates a
function from F with each basic block.
9
Meet Over All Paths Solution
Meet over all paths solution (MOP) of a data flow
system – MOP: N  L
MOP(s) = NULL (NULL is the element in L which
represents “no information”)
F
fπ is composition of functions from nodes along path π
excluding node n.
n1n2n3….nk-1nk 
fnk o fnk-1 o….o fn2 o fn1
10
MOP Solution
Finding MOP solution is undecidable, i.e. there does not
exist a general algorithm that computes MOP solution
for all monotone data flow systems.
Let X: N  L denote a total function that associates
nodes with lattice elements.
X is conservative or safe iff ∨n εN, X(n) ≤ MOP(n)
Iterative algorithm computes conservative
approximation of MOP. For distributive data flow
systems, it computes solution that is identical to MOP
solution.
11
Iterative Algorithm
12
Reaching Definitions
13
Contd…
14
Dominators
15
Constant Propagation
f (X)={(a,2),(b,3),(c,5)} f (Y)={(a,3),(b,2),(c,5)}
f (X) ∧ f (Y) = {(a,not-const), (b, not-const), (c,5)}
X ∧ Y = {(a,not-const),(b,not-const),(c,undef)}
f (X∧ Y) = {(a,not-const),(b,not-const),(c,not-const)}
f (X ∧ Y) ≤ f(X) ∧ f(Y)
16
Sample Problems
Data Flow Framework
17
Data Flow Framework
For each of the given problems provide the
following:
• Lattice values
• Meet operator
• Top and bottom elements
• The partial order relation, including its
pictorial representation
• The transfer function
• Data flow equations.
18
1. Reachable uses -- for each definition
identify the set of uses reachable by the
definition. This information is used for computing
def-use chains.
2. Reaching uses -- given a definition of
variable x, identify the set of uses of x
that are encountered prior to reaching
the definition and there is no other
definitions of x that intervene the use
and the definition. This information is used for
computing antidependences.
19
3. Classify Variable Values -- classify the value
of each program variable at each program point
into one of the following categories: (a) the value
is a unique constant -- you must also identify this
constant value; (b) the value is one-of-many
constants – you do not have to compute the
identities of these constants as part of your
solution; and (c) the value is not-a-constant, that is,
it is neither a unique constant nor a one-of-many
constants. This is a generalization of constant
propagation.
20
4. Postdominators -- postdominator set of a
node is the set of nodes that are
encountered along all paths from the
node to the end node of the control flow
graph. This information is used for computing
control dependence.
21
Download