Presentation is loading. Please wait.

Presentation is loading. Please wait.

Global Redundancy Elimination: Computing Available Expressions Copyright 2011, Keith D. Cooper & Linda Torczon, all rights reserved. Students enrolled.

Similar presentations


Presentation on theme: "Global Redundancy Elimination: Computing Available Expressions Copyright 2011, Keith D. Cooper & Linda Torczon, all rights reserved. Students enrolled."— Presentation transcript:

1 Global Redundancy Elimination: Computing Available Expressions Copyright 2011, Keith D. Cooper & Linda Torczon, all rights reserved. Students enrolled in Comp 512 at Rice University have explicit permission to make copies of these materials for their personal use. Faculty from other educational institutions may use these materials for nonprofit educational purposes, provided this copyright notice is preserved. Comp 512 Spring 2011 1COMP 512, Rice University

2 2 Computing Available Expressions For each block b Let A VAIL (b) be the set of expressions available on entry to b Let NK ILL (b) be the set of expression not killed in b Let D EF (b) be the set of expressions defined in b and not subsequently killed in b Now, A VAIL (b) can be defined as: A VAIL (b) =  x  pred(b) (D EF (x)  (A VAIL (x)  NK ILL (x) )) preds(b) is the set of b’s predecessors in the control-flow graph This system of simultaneous equations forms a data-flow problem  Solve it with a data-flow algorithm

3 COMP 512, Rice University3 Using Available Expressions for GCSE The Big Picture 1.  block b, compute D EF (b) and NK ILL (b) 2.  block b, compute A VAIL (b) 3.  block b, value number the block starting from A VAIL (b) 4. Replace expressions in A VAIL (b) with references Expressions not killed in b Expressions defined in b

4 COMP 512, Rice University4 First step is to compute D EF & NK ILL Computing Available Expressions assume a block b with operations o 1, o 2, …, o k K ILLED   D EF (b)   for i = k to 1 assume o i is “x  y + z” if (y  K ILLED (b)) and (z  K ILLED (b)) then add “y + z” to D EF (b) add x to K ILLED (b) N OT K ILLED (b)  { all expressions } For each expression e for each variable v  e if v  K ILLED (b) then N OT K ILLED (b)  N OT K ILLED (b) - e } O(k) steps } O(N) steps N is # of operations * Many data-flow problems have initial information that costs less to compute

5 COMP 512, Rice University5 Computing Available Expressions The worklist iterative algorithm Worklist  { all blocks, b i } while (Worklist   ) remove a block b from Worklist recompute A VAIL (b ) as A VAIL (b) =  x  pred(b) (D EF (x)  (A VAIL (x)  NK ILL (x) )) if A VAIL (b ) changed then Worklist  Worklist  successors(b ) Finds fixed point solution to equation for A VAIL That solution is unique Identical to “meet over all paths” solution } How do we know these things? *

6 COMP 512, Rice University6 Data-flow Analysis Definition Data-flow analysis is a collection of techniques for compile-time reasoning about the run-time flow of values Almost always involves building a graph  Problems are trivial on a basic block  Global problems  control-flow graph (or derivative)  Whole program problems  call graph (or derivative) Usually formulated as a set of simultaneous equations  Sets attached to nodes and edges  Lattice (or semilattice) to describe values Desired result is usually meet over all paths solution  “What is true on every path from the entry?”  “Can this happen on any path from the entry?”  Related to the safety of optimization Flow graph Data-flow problem

7 COMP 512, Rice University7 Data-flow Analysis Limitations 1. Precision – “up to symbolic execution”  Assume all paths are taken 2.Solution – cannot afford to compute M OP solution  Large class of problems where M OP = M FP = L FP  Not all problems of interest are in this class 3.Arrays – treated naively in classical analysis  Represent whole array with a single fact 4.Pointers – difficult ( and expensive ) to analyze  Imprecision rapidly adds up  Need to ask the right questions Summary For scalar values, we can quickly solve simple problems Good news: Simple problems can carry us pretty far *

8 COMP 512, Rice University8 Data-flow Analysis Semilattice A semilattice is a set L and a meet operation  such that,  a, b, & c  L : 1. a  a = a 2. a  b = b  a 3. a  (b  c) = (a  b)  c  imposes an order on L,  a, b, & c  L : 1. a ≥ b  a  b = b 2. a > b  a ≥ b and a ≠ b A semilattice has a bottom element, denoted  1.  a  L,   a =  2.  a  L, a ≥ 

9 COMP 512, Rice University9 Data-flow Analysis How does this relate to data-flow analysis? Choose a semilattice to represent the facts Attach a meaning to each a  L Each a  L is a distinct set of known facts With each node n, associate a function f n : L  L f n models behavior of code in block corresponding to n Let F be the set of all functions that the code might generate Example — A VAIL Semilattice is (2 E,  ), where E is the set of all expressions &  is   Set are bigger than | variables |,  is  For a node n, f n has the form f n (x) = D n  (x  N n )  Where D n is D EF (n) and N n is NK ILL (n)

10 COMP 512, Rice University10 Concrete Example: Available Expressions m  a + b n  a + b A p  c + d r  c + d B y  a + b z  c + d G q  a + b r  c + d C e  b + 18 s  a + b u  e + f D e  a + 17 t  c + d u  e + f E v  a + b w  c + d x  e + f F E = { a+b, c+d, e+f, a+17, b+18 } 2 E is the set of all subsets of E 2 E = [ {a+b, c+d, e+f, a+17, b+18}, {a+b, c+d, e+f, a+17}, {a+b, c+d, e+f, b+18}, {a+b, c+d, a+17, b+18}, {a+b, e+f, a+17, b+18}, {c+d, e+f, a+17, b+18}, {a+b, c+d, e+f}, {a+b, c+d, b+18}, {a+b, c+d, a+17}, {a+b, e+f, a+17}, {a+b, e+f, b+18},{a+b, a+17, b+18}, {c+d, e+f, a+17}, {c+d, e+f, b+18}, {c+d, a+17, b+18},{e+f, a+17, b+18}, {a+b, c+d},{a+b, e+f},{a+b, a+17}, {a+b, b+18},{c+d, e+f},{c+d, a+17}, {c+d, b+18},{e+f, a+17},{e+f, b+18}, {a+17, b+18},{a+b}, {c+d}, {e+f}, {a+17}, {b+18}, {} ]

11 COMP 512, Rice University11 Concrete Example: Available Expressions The Lattice { } {a+b} {c+d} {e+f} {a+17} {b+18} {a+b, c+d} {a+b, a+17} {c+d, e+f} {c+d, b+18} {e+f, b+18} {a+b, e+f} {a+b, b+18} {c+d, a+17} {e+f, a+17} {a+17, b+18} {a+b, c+d, e+f} {a+b, c+d, b+18} {a+b, c+d, a+17} {a+b, e+f, a+17} {a+b, e+f, b+18} {a+b, a+17, b+18} {c+d, e+f, a+17} {c+d, e+f, b+18} {c+d, a+17, b+18} {e+f, a+17, b+18}, {a+b, c+d, e+f, a+17} {a+b, c+d, e+f, b+18} {a+b, c+d, a+17, b+18} {a+b, e+f, a+17, b+18} {c+d, e+f, a+17, b+18} {a+b, c+d, e+f, a+17, b+18}, * Comparability (transitive) meet

12 COMP 512, Rice University12 Data-flow Analysis What does this have to do with the iterative algorithm? We can use a lattice-theoretic formulation to prove Termination – it halts on an instance of A VAIL Correctness – it produces the desired result for A VAIL Complexity – it runs pretty quickly ( d( CFG )+3 passes ) Worklist  { all blocks, b i } while (Worklist   ) remove a block b i from Worklist recompute A VAIL (b i ) as A VAIL (b) =  x  pred(b) (D EF (x)  (A VAIL (x)  NK ILL (x) )) if A VAIL (b i ) changed then Worklist  Worklist  successors(b i )

13 COMP 512, Rice University13 Data-flow Analysis Termination If every f n  F is monotone, i.e., f(x  y) ≤ f(x)  f(y), and If the lattice is bounded, i.e., every descending chain is finite  Chain is sequence x 1, x 2, …, x n where x i  L, 1 ≤ i ≤ n  x i > x i+1, 1 ≤ i < n  chain is descending Then The iterative algorithm must halt on an instance of the problem Set at each block can only change a finite number of times  Any finite semilattice is bounded Some infinite semilattices are bounded

14 COMP 512, Rice University14 Data-flow Analysis Correctness Does the iterative algorithm compute the desired answer? Admissible Function Spaces 1.  f  F,  x,y  L, f (x  y) = f (x)  f (y) 2.  f i  F such that  x  L, f i (x) = x 3.f,g  F   h  F such that h(x ) = f (g(x)) 4.  x  L,  a finite subset H  F such that x =  f  H f (  ) If F meets these four conditions, then the problem (L,F,  ) has a unique fixed point solution  LFP = MFP = MOP  order of evaluation does not matter Not distributive  answer may not be unique *

15 COMP 512, Rice University15 Data-flow Analysis Complexity For a problem with an admissible function space & a bounded semilattice, If the functions all meet the rapid condition, i.e.,  f,g  F,  x  L, f (g(  )) ≥ g(  )  f (x)  x then, a round-robin, reverse-postorder iterative algorithm will halt in d(G)+3 passes over a graph G d(G) is the loop-connectedness of the graph w.r.t a DFST  Maximal number of back edges in an acyclic path  Several studies suggest that, in practice, d(G) is small ( <3 )  For most CFGs, d(G) is independent of the specific DFST Sets stabilize in two passes around a loop Each pass does O(E ) meets & O(N ) other operations *

16 COMP 512, Rice University16 Data-flow analysis What does this mean? Reverse postorder  Number the nodes in a postorder traversal  Reverse the order Round-robin iterative algorithm  Visit all the nodes in a consistent order (RPO)  Do it again until the sets stop changing So, these conditions are easily met  Admissible framework, rapid function space  Round-robin, reverse-postorder, iterative algorithm  The analysis runs in ( effectively ) linear time

17 COMP 512, Rice University17 Data-flow Analysis How do we use these results?  Prove that data-flow framework is admissible & rapid  Its just algebra  Most (but not all) global data-flow problems are rapid  This is a property of F  Code up the iterative algorithm  World’s simplest data-flow algorithm  Other versions (worklist) have similar behavior This lets us ignore most of the other data-flow algorithms in 512

18 COMP 512, Rice University18 Global CSE ( replacement step ) Managing the name space Need a unique name  e  AVAIL(b) 1. Can generate them as replacements are done ( Fortran H ) 2. Can compute a static mapping 3. Can encode value numbers into names ( Briggs 94 ) Strategy 1. This works; it is the classic method 2.Fast, but limits replacement to textually identical expressions 3.Requires more analysis ( VN ), but yields more CSE s Assume, w.l.o.g., solution 2

19 COMP 512, Rice University19 Computing Available Expressions The Big Picture 1.Build a control-flow graph 2.Gather the initial (local) data — D EF (b) & NK ILL (b) 3. Propagate information around the graph, evaluating the equation 4.Post-process the information to make it useful ( if needed ) Most data-flow problems are solved, essentially, this way


Download ppt "Global Redundancy Elimination: Computing Available Expressions Copyright 2011, Keith D. Cooper & Linda Torczon, all rights reserved. Students enrolled."

Similar presentations


Ads by Google