U NIVERSITY OF D ELAWARE C OMPUTER & I NFORMATION S CIENCES D EPARTMENT Optimizing Compilers CISC 673 Spring 2011 Data flow analysis John Cavazos University of Delaware
U NIVERSITY OF D ELAWARE C OMPUTER & I NFORMATION S CIENCES D EPARTMENT 2 Data flow analysis Solving set of equations posed over graph representation (e.g., CFG) Based on any or all paths through program “Any path” or “All path” problems
U NIVERSITY OF D ELAWARE C OMPUTER & I NFORMATION S CIENCES D EPARTMENT 3 Includes Infeasible Paths a = 1; if (a == 0) { a = 1; } if (a == 0) { a = 2; } Infeasible paths never actually taken by program, regardless of input Undecidable to distinguish from feasible
U NIVERSITY OF D ELAWARE C OMPUTER & I NFORMATION S CIENCES D EPARTMENT 4 Data Flow-Based Optimizations Dead variable elimination a = 3; print a; x = 12; halt ) a = 3; print a; halt Copy propagation x = y; … use of x ) …use of y Partial redundancy a = 3*c + d; b = 3*c ) b = 3*c; a=b+d Constant propagation a = 3; b = 2; c = a+b ) a = 3; b = 2; c = 5
U NIVERSITY OF D ELAWARE C OMPUTER & I NFORMATION S CIENCES D EPARTMENT 5 Example: Redundancy Elimination Expression e at point p redundant iff every path from procedure’s entry to p contains evaluation of e and value(s) of e’s operands do not change between those earlier evaluations and p Evaluating e at p always produces the same value as those earlier evaluations
U NIVERSITY OF D ELAWARE C OMPUTER & I NFORMATION S CIENCES D EPARTMENT 6 Example m a + b n a + b A p c + d r c + d B q a + b r c + d C
U NIVERSITY OF D ELAWARE C OMPUTER & I NFORMATION S CIENCES D EPARTMENT 7 Redundancy Elimination If the compiler can prove expression redundant Replace redundant evaluation with reference Problem Proving x+y is redundant Eliminate redundant evaluation Can use value numbering
U NIVERSITY OF D ELAWARE C OMPUTER & I NFORMATION S CIENCES D EPARTMENT 8 Value Numbering Key notion Assign a number, V(n), to each expression V(x+y) = V(j) iff x+y and j have same value inputs Hash on value numbers to make efficient Use numbers to improve the code
U NIVERSITY OF D ELAWARE C OMPUTER & I NFORMATION S CIENCES D EPARTMENT 9 Local Value Numbering The algorithm For each expression e in the block 1 Get value numbers for operands o 1 and o 2 from hash lookup 2 Hash to get value number for e 3 If e already had a value number, replace e with a reference 4 If o 1 & o 2 are constant, evaluate it & use a “load immediate” Local one block at a time
U NIVERSITY OF D ELAWARE C OMPUTER & I NFORMATION S CIENCES D EPARTMENT 10 Local Value Numbering Example With VNs a 0 3 x y 0 2 b 0 3 x y 0 2 a 1 4 17 c 0 3 x y 0 2 Original Code a 0 x 0 + y 0 b 0 x 0 + y 0 a 1 17 c 0 x 0 + y 0 1. Renaming: Give each value a unique name While complex, the meaning is clear Rewritten a 0 3 x y 0 2 b 0 3 a 0 3 a 1 4 17 c 0 3 a Result: a 0 3 is available rewriting works
U NIVERSITY OF D ELAWARE C OMPUTER & I NFORMATION S CIENCES D EPARTMENT 11 Global Redundancy Elimination u e + f D E x e + f F e+f is redundant Find common subexpressions beyond basic blocks, and eliminate unnecessary re-evaluations
U NIVERSITY OF D ELAWARE C OMPUTER & I NFORMATION S CIENCES D EPARTMENT 12 Expression “available” is as follows: Expression defined at point p if value computed at p Expression killed at point p if one or more operands defined at point p e available at p if every path leading to p contains a prior definition of e and e is not killed between definition and p
U NIVERSITY OF D ELAWARE C OMPUTER & I NFORMATION S CIENCES D EPARTMENT 13 Expression “available” visually:
U NIVERSITY OF D ELAWARE C OMPUTER & I NFORMATION S CIENCES D EPARTMENT 14 “Available” Expressions for GCSE GCSE = Global Common Subexpression Elimination Mechanism System of simultaneous equations over the CFG Solve the equations to produce a set for each CFG node Contains names of every expression available on entry Use these sets, AVAIL(n), for redundancy elimination
U NIVERSITY OF D ELAWARE C OMPUTER & I NFORMATION S CIENCES D EPARTMENT 15 “Available” Expressions for GCSE Safety x+y AVAIL(n) proves earlier value x+y is same Transformation provides name for each value Several schemes for this mapping
U NIVERSITY OF D ELAWARE C OMPUTER & I NFORMATION S CIENCES D EPARTMENT 16 “Available” Expressions for GCSE Profitability Do not add any evaluations Add some copy operations Copies are inexpensive Many copies coalesce away
U NIVERSITY OF D ELAWARE C OMPUTER & I NFORMATION S CIENCES D EPARTMENT 17 Computing Available Expressions For each block b Let AVAIL(b) be the set of expressions available on entry to b AVAIL constructed from local sets Let EXPRKILL(b) be the set of expression killed in b Let DEEXPR(b) be the set of downward exposed expressions x DEEXPR(b) x defined in b & not subsequently killed in b
U NIVERSITY OF D ELAWARE C OMPUTER & I NFORMATION S CIENCES D EPARTMENT 18 Computing Available Expressions Now, AVAIL(b) can be defined as: AVAIL(b) = p pred(b) (DEEXPR(p) (AVAIL(p) EXPRKILL(p) )) AVAIL(n 0 ) = Ø where preds(b) is the set of b’s predecessors in the CFG This system of simultaneous equations forms a data-flow problem Solve it with a data-flow algorithm Entry node in CFG is n 0
U NIVERSITY OF D ELAWARE C OMPUTER & I NFORMATION S CIENCES D EPARTMENT 19 Computing Available Expressions ……………… DEEXPR (p) And not later killed Downward exposed expressions Basic Block p AVAIL(b) = p pred(b) (DEEXPR(p) (AVAIL(p) EXPRKILL(p) ))
U NIVERSITY OF D ELAWARE C OMPUTER & I NFORMATION S CIENCES D EPARTMENT 20 Computing Available Expressions Expressions that Pass through unscathed ……………… AVAIL(p) EXPRKILL(p) AVAIL(p) EXPRKILL(p) Available upon entry Any expresssions killed Basic Block p AVAIL(b) = p pred(b) (DEEXPR(p) (AVAIL(p) EXPRKILL(p) ))
U NIVERSITY OF D ELAWARE C OMPUTER & I NFORMATION S CIENCES D EPARTMENT 21 Available Expressions for GCSE
U NIVERSITY OF D ELAWARE C OMPUTER & I NFORMATION S CIENCES D EPARTMENT 22 Available Expressions for GCSE The Big Picture 1. block b, compute AVAIL(b) 2. Assign unique global names to expressions in AVAIL(b) 3. block b, local value number b starting with AVAIL(b)
U NIVERSITY OF D ELAWARE C OMPUTER & I NFORMATION S CIENCES D EPARTMENT 23 Compute DEExpr for each Block b assume a block b with operations o 1, o 2, …, o k V AR K ILL Ø DEE XPR (b) Ø for i = k to 1 // from last to first insts assume o i is “x y + z” add x to V AR K ILL if (y V AR K ILL ) and (z V AR K ILL ) then add “y + z” to DEE XPR (b) } Compute DEExpr
U NIVERSITY OF D ELAWARE C OMPUTER & I NFORMATION S CIENCES D EPARTMENT 24 Compute ExprKILL for each Block b E XPR K ILL (b) Ø For each expression e in procedure for each variable v e if v V AR K ILL (b) then E XPR K ILL (b) E XPR K ILL (b) {e } } Compute ExprKill
U NIVERSITY OF D ELAWARE C OMPUTER & I NFORMATION S CIENCES D EPARTMENT 25 Example v a + b a c + d x e + f DEExpr = { c+d,e+f } VarKill = {v,a,x} ExprKill = {a+b}
U NIVERSITY OF D ELAWARE C OMPUTER & I NFORMATION S CIENCES D EPARTMENT 26 Compute Available Expressions for all blocks b compute DEExpr(b) and EXPRKILL(b) Changed=true while (Changed) Changed=false for all blocks b OldValue = A VAIL (b) A VAIL (b) = p pred(b) (DEE XPR (p) (A VAIL (p) E XPR K ILL (p) )) if A VAIL (b ) != OldValue Changed=true
U NIVERSITY OF D ELAWARE C OMPUTER & I NFORMATION S CIENCES D EPARTMENT 27 Example: Compute DEEXPR 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 assume a block b with operations o 1, o 2, …, o k VARKILL Ø DEEXPR(b) Ø for i = k to 1 // from last to first insts assume o i is “x y + z” add x to VARKILL if (y VARKILL) and (z VARKILL) then add “y + z” to DEEXPR(b)
U NIVERSITY OF D ELAWARE C OMPUTER & I NFORMATION S CIENCES D EPARTMENT 28 Example: Compute EXPRKILL 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 EXPRKILL(b) Ø For each expression e in procedure for each variable v e if v VARKILL(b) then EXPRKILL(b) EXPRKILL(b) {e }
U NIVERSITY OF D ELAWARE C OMPUTER & I NFORMATION S CIENCES D EPARTMENT 29 Example AVAIL(A) = Ø AVAIL(B) = {a+b} (Ø all) = {a+b} AVAIL(C) = {a+b} AVAIL(D) = {a+b,c+d} ({a+b} all) = {a+b,c+d} AVAIL(E) = {a+b,c+d} AVAIL(F) = [{b+18,a+b,e+f} ({a+b,c+d} {all - e+f})] [{a+17,c+d,e+f} ({a+b,c+d} {all - e+f})] = {a+b,c+d,e+f} AVAIL(G)= [ {c+d} ({a+b} all)] [{a+b,c+d,e+f} ({a+b,c+d,e+f} all)] = {a+b,c+d} 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 p pred(b) (DEEXPR(p) (AVAIL(p) EXPRKILL(p) ))
U NIVERSITY OF D ELAWARE C OMPUTER & I NFORMATION S CIENCES D EPARTMENT 30 Example 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 A VAIL sets in blue { a+b } { a+b,c+d } { a+b,c+d,e+f } { a+b,c+d } { a+b }
U NIVERSITY OF D ELAWARE C OMPUTER & I NFORMATION S CIENCES D EPARTMENT 31 Remember Big Picture The Big Picture 1. block b, compute AVAIL(b) 2. Assign unique global names to expressions in AVAIL(b) 3. block b, value number b starting with AVAIL(b) We’ve done step 1.
U NIVERSITY OF D ELAWARE C OMPUTER & I NFORMATION S CIENCES D EPARTMENT 32 Global CSE (replacement step) Compute a static mapping from expression to name After analysis & before transformation b, e AVAIL(b), assign e a global name by hashing on e
U NIVERSITY OF D ELAWARE C OMPUTER & I NFORMATION S CIENCES D EPARTMENT 33 Example 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 { a+b } { a+b,c+d } { a+b,c+d,e+f } { a+b,c+d } { a+b } Assigning unique names to global CSEs a+b t 1 c+d t 2 e+f t 3
U NIVERSITY OF D ELAWARE C OMPUTER & I NFORMATION S CIENCES D EPARTMENT 34 Remember the Big Picture The Big Picture 1. block b, compute AVAIL(b) 2. Assign unique global names to expressions in AVAIL(b) 3. block b, value number b starting with AVAIL(b) We’ve done steps 1 & 2.
U NIVERSITY OF D ELAWARE C OMPUTER & I NFORMATION S CIENCES D EPARTMENT 35 Value Numbering To perform replacement, value numbering each block b Initialize hash table with AVAIL(b) Replace an expression in AVAIL(b) means copy from its name At each evaluation of a global name, copy new value to its name Otherwise, value number as in last lecture
U NIVERSITY OF D ELAWARE C OMPUTER & I NFORMATION S CIENCES D EPARTMENT 36 Net Result Catches local redundancies with value numbering Catches nonlocal redundancies because of AVAIL sets Not quite same effect, but close Local redundancies found by value Global redundancies found by spelling
U NIVERSITY OF D ELAWARE C OMPUTER & I NFORMATION S CIENCES D EPARTMENT 37 Example m a + b t 1 m n t 1 A p c + d t 2 p r t 2 B y t 1 z t 2 G q t 1 r c + d t 2 r C e b + 18 s t 1 u e + f t 3 u D e a + 17 t t 2 u e + f t 3 u E v t 1 w t 2 x t 3 F After replacement & local value numbering
U NIVERSITY OF D ELAWARE C OMPUTER & I NFORMATION S CIENCES D EPARTMENT 38 Example m a + b t 1 m n t 1 A p c + d t 2 p r t 2 B y t 1 z t 2 G q t 1 r c + d t 2 r C e b + 18 s t 1 u e + f t 3 u D e a + 17 t t 2 u e + f t 3 u E v t 1 w t 2 x t 3 F In practice, most of these copies will be folded into subsequent uses… u p r r m m m mr m
U NIVERSITY OF D ELAWARE C OMPUTER & I NFORMATION S CIENCES D EPARTMENT 39 Some Copies Serve a Purpose In the example, all the copies coalesce away. Sometimes, the copies are needed. Copies into t 1 create a common name along two paths Makes the replacement possible w a + bw a + bx a + bx a + b y a + by a + b w a + bt1 ww a + bt1 w x a + bt1 xx a + bt1 x y t1y t1 Cannot write “ w or x ”
U NIVERSITY OF D ELAWARE C OMPUTER & I NFORMATION S CIENCES D EPARTMENT 40 Example 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 LVN GRE
U NIVERSITY OF D ELAWARE C OMPUTER & I NFORMATION S CIENCES D EPARTMENT 41 Next Time More Data Flow