160 likes | 267 Views
CS 201 Compiler Construction. Lecture 4 Data Flow Framework. Data Flow Framework. The various problems considered have things in common: Transfer functions Confluence Operator Direction of Propagation
E N D
CS 201Compiler Construction Lecture 4 Data Flow Framework
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.
Monotone Data Flow Framework Components of the framework: Information Set: L Effect of joining paths: ∧ (meet operator) Effect of basic blocks: fn (monotone transfer func.) Iterative Solution: can be shown to terminate (L,∧) is a semilattice st ∨ a,b,c εL a ∧ a = a (idempotent) a ∧ b = b ∧ a (commutative) 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.
Contd.. Max ca 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.
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)
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 ≤
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.
Monotone Function Space • A monotone function space for a semilattice is a set F of monotonic functions which: • Contains the identity function (id) • -- basic blocks may not modify information • Is closed under function composition • -- to model the effects of paths • 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.
A Monotone Data Flow System A monotone data flow system is a tuple < L, ∧, F, G, FM > (L,∧) is a bounded semilattice with Τ & F is the monotone function space G = (N, E, s) is the program flow graph FM: N F is a total function that associates a function from F with each basic block.
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. n1n2n3….nk-1nk fnk o fnk-1 o….o fn2 o fn1
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.
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)