Optimizing Compilers CISC 673 Spring 2011 Data flow analysis
-
Upload
domenico-beglan -
Category
Documents
-
view
40 -
download
2
description
Transcript of Optimizing Compilers CISC 673 Spring 2011 Data flow analysis
UUNIVERSITYNIVERSITY OFOF D DELAWARE ELAWARE • • C COMPUTER & OMPUTER & IINFORMATION NFORMATION SSCIENCES CIENCES DDEPARTMENTEPARTMENT
Optimizing CompilersCISC 673
Spring 2011Data flow analysis
John CavazosUniversity of Delaware
UUNIVERSITYNIVERSITY OFOF D DELAWARE ELAWARE • • C COMPUTER & OMPUTER & IINFORMATION NFORMATION SSCIENCES CIENCES DDEPARTMENTEPARTMENT 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
UUNIVERSITYNIVERSITY OFOF D DELAWARE ELAWARE • • C COMPUTER & OMPUTER & IINFORMATION NFORMATION SSCIENCES CIENCES DDEPARTMENTEPARTMENT 3
Includes Infeasible Pathsa = 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
UUNIVERSITYNIVERSITY OFOF D DELAWARE ELAWARE • • C COMPUTER & OMPUTER & IINFORMATION NFORMATION SSCIENCES CIENCES DDEPARTMENTEPARTMENT 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
UUNIVERSITYNIVERSITY OFOF D DELAWARE ELAWARE • • C COMPUTER & OMPUTER & IINFORMATION NFORMATION SSCIENCES CIENCES DDEPARTMENTEPARTMENT 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
UUNIVERSITYNIVERSITY OFOF D DELAWARE ELAWARE • • C COMPUTER & OMPUTER & IINFORMATION NFORMATION SSCIENCES CIENCES DDEPARTMENTEPARTMENT 6
Example
m a + bn a + b
A
p c + dr c + d
B q a + br c + d
C
UUNIVERSITYNIVERSITY OFOF D DELAWARE ELAWARE • • C COMPUTER & OMPUTER & IINFORMATION NFORMATION SSCIENCES CIENCES DDEPARTMENTEPARTMENT 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
UUNIVERSITYNIVERSITY OFOF D DELAWARE ELAWARE • • C COMPUTER & OMPUTER & IINFORMATION NFORMATION SSCIENCES CIENCES DDEPARTMENTEPARTMENT 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
UUNIVERSITYNIVERSITY OFOF D DELAWARE ELAWARE • • C COMPUTER & OMPUTER & IINFORMATION NFORMATION SSCIENCES CIENCES DDEPARTMENTEPARTMENT 9
Local Value Numbering
The algorithm
For each expression e in the block
1 Get value numbers for operands o1 and o2 from hash lookup
2 Hash <operator,VN(o1),VN(o2)> to get value number for e
3 If e already had a value number, replace e with a reference
4 If o1 & o2 are constant, evaluate it & use a “load immediate”
Local one block at a time
UUNIVERSITYNIVERSITY OFOF D DELAWARE ELAWARE • • C COMPUTER & OMPUTER & IINFORMATION NFORMATION SSCIENCES CIENCES DDEPARTMENTEPARTMENT 10
Local Value Numbering Example
With VNs
a03 x0
1 + y02
b03 x0
1 + y02
a14 17
c03 x0
1 + y02
Original Code
a0 x0 + y0
b0 x0 + y0
a1 17
c0 x0 + y0
1. Renaming:
• Give each value a unique name
• While complex, the meaning is clear
Rewritten
a03 x0
1 + y02
b03 a0
3
a14 17
c03 a0
3
2. Result:
• a03 is available
• rewriting works
UUNIVERSITYNIVERSITY OFOF D DELAWARE ELAWARE • • C COMPUTER & OMPUTER & IINFORMATION NFORMATION SSCIENCES CIENCES DDEPARTMENTEPARTMENT 11
Global Redundancy Elimination
u e + fD u e + fE
x e + fFe+f is
redundant
Find common subexpressions beyond basic blocks, and eliminate unnecessary re-evaluations
UUNIVERSITYNIVERSITY OFOF D DELAWARE ELAWARE • • C COMPUTER & OMPUTER & IINFORMATION NFORMATION SSCIENCES CIENCES DDEPARTMENTEPARTMENT 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
UUNIVERSITYNIVERSITY OFOF D DELAWARE ELAWARE • • C COMPUTER & OMPUTER & IINFORMATION NFORMATION SSCIENCES CIENCES DDEPARTMENTEPARTMENT 13
Expression “available” visually:
UUNIVERSITYNIVERSITY OFOF D DELAWARE ELAWARE • • C COMPUTER & OMPUTER & IINFORMATION NFORMATION SSCIENCES CIENCES DDEPARTMENTEPARTMENT 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
UUNIVERSITYNIVERSITY OFOF D DELAWARE ELAWARE • • C COMPUTER & OMPUTER & IINFORMATION NFORMATION SSCIENCES CIENCES DDEPARTMENTEPARTMENT 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
UUNIVERSITYNIVERSITY OFOF D DELAWARE ELAWARE • • C COMPUTER & OMPUTER & IINFORMATION NFORMATION SSCIENCES CIENCES DDEPARTMENTEPARTMENT 16
“Available” Expressions for GCSE
Profitability• Do not add any evaluations• Add some copy operations
•Copies are inexpensive
•Many copies coalesce away
UUNIVERSITYNIVERSITY OFOF D DELAWARE ELAWARE • • C COMPUTER & OMPUTER & IINFORMATION NFORMATION SSCIENCES CIENCES DDEPARTMENTEPARTMENT 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
UUNIVERSITYNIVERSITY OFOF D DELAWARE ELAWARE • • C COMPUTER & OMPUTER & IINFORMATION NFORMATION SSCIENCES CIENCES DDEPARTMENTEPARTMENT 18
Computing Available Expressions
Now, AVAIL(b) can be defined as:
AVAIL(b) = ppred(b) (DEEXPR(p) (AVAIL(p) EXPRKILL(p) ))
AVAIL(n0) = Ø
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 n0
UUNIVERSITYNIVERSITY OFOF D DELAWARE ELAWARE • • C COMPUTER & OMPUTER & IINFORMATION NFORMATION SSCIENCES CIENCES DDEPARTMENTEPARTMENT 19
Computing Available Expressions
………
DEEXPR (p)
And not later killed
Downward exposed
expressions
Basic Block p
AVAIL(b) = ppred(b) (DEEXPR(p) (AVAIL(p) EXPRKILL(p) ))
UUNIVERSITYNIVERSITY OFOF D DELAWARE ELAWARE • • C COMPUTER & OMPUTER & IINFORMATION NFORMATION SSCIENCES CIENCES DDEPARTMENTEPARTMENT 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) = ppred(b) (DEEXPR(p) (AVAIL(p) EXPRKILL(p) ))
UUNIVERSITYNIVERSITY OFOF D DELAWARE ELAWARE • • C COMPUTER & OMPUTER & IINFORMATION NFORMATION SSCIENCES CIENCES DDEPARTMENTEPARTMENT 21
Available Expressions for GCSE
UUNIVERSITYNIVERSITY OFOF D DELAWARE ELAWARE • • C COMPUTER & OMPUTER & IINFORMATION NFORMATION SSCIENCES CIENCES DDEPARTMENTEPARTMENT 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)
UUNIVERSITYNIVERSITY OFOF D DELAWARE ELAWARE • • C COMPUTER & OMPUTER & IINFORMATION NFORMATION SSCIENCES CIENCES DDEPARTMENTEPARTMENT 23
Compute DEExpr for each Block b
assume a block b with operations o1, o2, …, ok
VARKILL ØDEEXPR(b) Ø
for i = k to 1 // from last to first instsassume oi is “x y + z”add x to VARKILL if (y VARKILL) and (z VARKILL) then
add “y + z” to DEEXPR(b)
} Compute DEExpr
UUNIVERSITYNIVERSITY OFOF D DELAWARE ELAWARE • • C COMPUTER & OMPUTER & IINFORMATION NFORMATION SSCIENCES CIENCES DDEPARTMENTEPARTMENT 24
Compute ExprKILL for each Block b
EXPRKILL(b) Ø
For each expression e in procedurefor each variable v e
if v VARKILL(b) then EXPRKILL(b) EXPRKILL(b)
{e }
}Compute ExprKill
UUNIVERSITYNIVERSITY OFOF D DELAWARE ELAWARE • • C COMPUTER & OMPUTER & IINFORMATION NFORMATION SSCIENCES CIENCES DDEPARTMENTEPARTMENT 25
Example
v a + ba c + dx e + f
DEExpr = {c+d,e+f }
VarKill = {v,a,x}
ExprKill = {a+b}
UUNIVERSITYNIVERSITY OFOF D DELAWARE ELAWARE • • C COMPUTER & OMPUTER & IINFORMATION NFORMATION SSCIENCES CIENCES DDEPARTMENTEPARTMENT 26
Compute Available Expressions
for all blocks b
compute DEExpr(b) and EXPRKILL(b)
Changed=truewhile (Changed)
Changed=false for all blocks b
OldValue = AVAIL(b)
AVAIL(b) = ppred(b) (DEEXPR(p) (AVAIL(p) EXPRKILL(p) ))
if AVAIL(b ) != OldValue Changed=true
UUNIVERSITYNIVERSITY OFOF D DELAWARE ELAWARE • • C COMPUTER & OMPUTER & IINFORMATION NFORMATION SSCIENCES CIENCES DDEPARTMENTEPARTMENT 27
Example: Compute DEEXPRm a + bn a + b
A
p c + dr c + d
B
y a + bz c + dG
q a + br c + d
C
e b + 18s a + bu e + f
D
e a + 17t c + du e + f
E
v a + bw c + dx e + f
F
assume a block b with operations o1, o2, …, ok
VARKILL ØDEEXPR(b) Ø
for i = k to 1 // from last to first instsassume oi is “x y + z”add x to VARKILL if (y VARKILL) and (z VARKILL)
thenadd “y + z” to DEEXPR(b)
UUNIVERSITYNIVERSITY OFOF D DELAWARE ELAWARE • • C COMPUTER & OMPUTER & IINFORMATION NFORMATION SSCIENCES CIENCES DDEPARTMENTEPARTMENT 28
Example: Compute EXPRKILLm a + bn a + b
A
p c + dr c + d
B
y a + bz c + dG
q a + br c + d
C
e b + 18s a + bu e + f
D
e a + 17t c + du e + f
E
v a + bw c + dx e + f
F
EXPRKILL(b) Ø
For each expression e in procedurefor each variable v e
if v VARKILL(b) then EXPRKILL(b) EXPRKILL(b)
{e }
UUNIVERSITYNIVERSITY OFOF D DELAWARE ELAWARE • • C COMPUTER & OMPUTER & IINFORMATION NFORMATION SSCIENCES CIENCES DDEPARTMENTEPARTMENT 29
ExampleAVAIL(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 + bn a + b
A
p c + dr c + d
B
y a + bz c + d
G
q a + br c + d
C
e b + 18s a + bu e + f
D e a + 17t c + du e + f
E
v a + bw c + dx e + f
F
A B C D E F GDEEXPR a+b c+d a+b,c+db+18,a+b,e+fa+17,c+d,e+fa+b,c+d,e+fa+b,c+dEXPRK ILL { } { } { } e+f e+f { } { }
ppred(b) (DEEXPR(p) (AVAIL(p) EXPRKILL(p) ))
UUNIVERSITYNIVERSITY OFOF D DELAWARE ELAWARE • • C COMPUTER & OMPUTER & IINFORMATION NFORMATION SSCIENCES CIENCES DDEPARTMENTEPARTMENT 30
Example
m a + bn a + b
A
p c + dr c + d
B
y a + bz c + d
G
q a + br c + d
C
e b + 18s a + bu e + f
D e a + 17t c + du e + f
E
v a + bw c + dx e + f
F
AVAIL sets in blue
{ a+b }
{ a+b,c+d }
{ a+b,c+d }
{ a+b,c+d,e+f }
{ a+b,c+d }
{ a+b }
UUNIVERSITYNIVERSITY OFOF D DELAWARE ELAWARE • • C COMPUTER & OMPUTER & IINFORMATION NFORMATION SSCIENCES CIENCES DDEPARTMENTEPARTMENT 31
Remember Big PictureThe 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.
UUNIVERSITYNIVERSITY OFOF D DELAWARE ELAWARE • • C COMPUTER & OMPUTER & IINFORMATION NFORMATION SSCIENCES CIENCES DDEPARTMENTEPARTMENT 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
UUNIVERSITYNIVERSITY OFOF D DELAWARE ELAWARE • • C COMPUTER & OMPUTER & IINFORMATION NFORMATION SSCIENCES CIENCES DDEPARTMENTEPARTMENT 33
Example
m a + bn a + b
A
p c + dr c + d
B
y a + bz c + d
G
q a + br c + d
C
e b + 18s a + bu e + f
D e a + 17t c + du e + f
E
v a + bw c + dx e + f
F
{ a+b }
{ a+b,c+d }
{ a+b,c+d }
{ a+b,c+d,e+f }
{ a+b,c+d }
{ a+b }
Assigning unique names to global
CSEsa+b t1
c+d t2
e+f t3
UUNIVERSITYNIVERSITY OFOF D DELAWARE ELAWARE • • C COMPUTER & OMPUTER & IINFORMATION NFORMATION SSCIENCES CIENCES DDEPARTMENTEPARTMENT 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.
UUNIVERSITYNIVERSITY OFOF D DELAWARE ELAWARE • • C COMPUTER & OMPUTER & IINFORMATION NFORMATION SSCIENCES CIENCES DDEPARTMENTEPARTMENT 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
UUNIVERSITYNIVERSITY OFOF D DELAWARE ELAWARE • • C COMPUTER & OMPUTER & IINFORMATION NFORMATION SSCIENCES CIENCES DDEPARTMENTEPARTMENT 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
UUNIVERSITYNIVERSITY OFOF D DELAWARE ELAWARE • • C COMPUTER & OMPUTER & IINFORMATION NFORMATION SSCIENCES CIENCES DDEPARTMENTEPARTMENT 37
Examplem a + b t1 m n t1
A
p c + d t2 p r t2
B
y t1
z t2
G
q t1 r c + d t2 r
C
e b + 18 s t1
u e + f t3 u
D e a + 17 t t2
u e + f t3 u
E
v t1
w t2
x t3
F
After replacement &
local value numbering
UUNIVERSITYNIVERSITY OFOF D DELAWARE ELAWARE • • C COMPUTER & OMPUTER & IINFORMATION NFORMATION SSCIENCES CIENCES DDEPARTMENTEPARTMENT 38
Examplem a + b t1 m n t1
A
p c + d t2 p r t2
B
y t1
z t2
G
q t1 r c + d t2 r
C
e b + 18 s t1
u e + f t3 u
D e a + 17 t t2
u e + f t3 u
E
v t1
w t2
x t3
F
In practice, most of these copies will be folded into subsequent uses…
u
p
r
r
m
m
m
m r
m
UUNIVERSITYNIVERSITY OFOF D DELAWARE ELAWARE • • C COMPUTER & OMPUTER & IINFORMATION NFORMATION SSCIENCES CIENCES DDEPARTMENTEPARTMENT 39
Some Copies Serve a PurposeIn the example, all the copies coalesce away.
Sometimes, the copies are needed.
• Copies into t1 create a common name along two paths
• Makes the replacement possible
w a + b x a + b
y a + b
w a + bt1 w
x a + bt1 x
y t1
Cannot write
“w or x”
UUNIVERSITYNIVERSITY OFOF D DELAWARE ELAWARE • • C COMPUTER & OMPUTER & IINFORMATION NFORMATION SSCIENCES CIENCES DDEPARTMENTEPARTMENT 40
Examplem a + bn a + b
A
p c + dr c + d
B
y a + bz c + d
G
q a + br c + d
C
e b + 18s a + bu e + f
D e a + 17t c + du e + f
E
v a + bw c + dx e + f
F
LVN
LVN
GRE
GRE
GRE
GRE
GRE
GRE
GRE
GRE
UUNIVERSITYNIVERSITY OFOF D DELAWARE ELAWARE • • C COMPUTER & OMPUTER & IINFORMATION NFORMATION SSCIENCES CIENCES DDEPARTMENTEPARTMENT 41
Next Time
More Data Flow