1 CS 201 Compiler Construction Lecture 9 Static Single Assignment Form.
1 CS 201 Compiler Construction Lecture 4 Data Flow Framework.
-
date post
21-Dec-2015 -
Category
Documents
-
view
220 -
download
0
Transcript of 1 CS 201 Compiler Construction Lecture 4 Data Flow Framework.
2
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.
3
Monotone Data Flow Framework
Components of the framework:1.Information Set: L2.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 εL1.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 ∧ Τ = aIf top & bottom elements exist, they are unique.
Contd..
Relation ≤ is a partial order on L
a ≤ b ≅ a ∧ b = a
Can similarly define <, >, ≥ relations
A semilattice is bounded iff ∨ a εL there exists a constant ca st length of chain beginning at a is at most ca.
4
Max ca
5
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: LL is monotonic iff ∨ a,b ε L f(a∧b) ≤ f(a) ∧ f(b)
Distributive function: f(a∧b) = f(a) ∧ f(b)
For monotonic functions: a ≤ b => f(a) ≤ f(b)
6
Contd..
For monotonic functions: a ≤ b => f(a) ≤ f(b)
Proof:
f(a∧b) ≤ f(a) ∧ f(b) Defn. of Monotonicityf(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 = af(a) ∧ f(b) = f(a) f(a)∧f(a) = f(a) idempotencef(a) ≤ f(b) Defn. of ≤
7
Fixpoint
A fixpoint of a monotonic function f: L L is a valuea ε 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.
8
Monotone Function SpaceA 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.
9
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 space3.G = (N, E, s) is the program flow graph4.FM: N F is a total function that associates a function from F with each basic block.
10
Meet Over All Paths SolutionMeet 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”)
Ffπ is composition of functions from nodes along path π excluding node n. n1n2n3….nk-1nk fnk o fnk-1 o….o fn2 o fn1
11
MOP SolutionFinding 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.