Presentation is loading. Please wait.

Presentation is loading. Please wait.

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.

Similar presentations


Presentation on theme: "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."— Presentation transcript:

1 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

2 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

3 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

4 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

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

6 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

7 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

8 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

9 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

10 U NIVERSITY OF D ELAWARE C OMPUTER & I NFORMATION S CIENCES D EPARTMENT 10 Local Value Numbering Example With VNs a 0 3  x 0 1 + y 0 2  b 0 3  x 0 1 + y 0 2 a 1 4  17  c 0 3  x 0 1 + 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 0 1 + y 0 2  b 0 3  a 0 3 a 1 4  17  c 0 3  a 0 3 2. Result: a 0 3 is available rewriting works

11 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

12 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

13 U NIVERSITY OF D ELAWARE C OMPUTER & I NFORMATION S CIENCES D EPARTMENT 13 Expression “available” visually:

14 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

15 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

16 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

17 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

18 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

19 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) ))

20 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) ))

21 U NIVERSITY OF D ELAWARE C OMPUTER & I NFORMATION S CIENCES D EPARTMENT 21 Available Expressions for GCSE

22 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)

23 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

24 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

25 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}

26 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

27 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)

28 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 }

29 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) ))

30 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 } 

31 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.

32 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

33 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

34 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.

35 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

36 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

37 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

38 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

39 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 ”

40 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

41 U NIVERSITY OF D ELAWARE C OMPUTER & I NFORMATION S CIENCES D EPARTMENT 41 Next Time More Data Flow


Download ppt "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."

Similar presentations


Ads by Google