optimizing compilers cisc 673 spring 2009 more data flow analysis

40
UNIVERSITY NIVERSITY OF OF D DELAWARE ELAWARE C COMPUTER & OMPUTER & INFORMATION NFORMATION SCIENCES CIENCES DEPARTMENT EPARTMENT Optimizing Compilers CISC 673 Spring 2009 More Data flow analysis John Cavazos University of Delaware

Upload: anneke

Post on 07-Jan-2016

34 views

Category:

Documents


3 download

DESCRIPTION

Optimizing Compilers CISC 673 Spring 2009 More Data flow analysis. John Cavazos University of Delaware. Overview. Last Time: Avail Expressions Using Sets Using Bit Vectors Additional Data Flow Problem Constant Propagation Generalization of Data Flow. Computing Available Expressions. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Optimizing Compilers CISC 673 Spring 2009 More Data flow analysis

UUNIVERSITYNIVERSITY OFOF D DELAWARE ELAWARE • • C COMPUTER & OMPUTER & IINFORMATION NFORMATION SSCIENCES CIENCES DDEPARTMENTEPARTMENT

Optimizing CompilersCISC 673

Spring 2009More Data flow analysis

John CavazosUniversity of Delaware

Page 2: Optimizing Compilers CISC 673 Spring 2009 More Data flow analysis

UUNIVERSITYNIVERSITY OFOF D DELAWARE ELAWARE • • C COMPUTER & OMPUTER & IINFORMATION NFORMATION SSCIENCES CIENCES DDEPARTMENTEPARTMENT 2

Overview

Last Time: Avail Expressions Using Sets Using Bit Vectors Additional Data Flow Problem

Constant Propagation Generalization of Data Flow

Page 3: Optimizing Compilers CISC 673 Spring 2009 More Data flow analysis

UUNIVERSITYNIVERSITY OFOF D DELAWARE ELAWARE • • C COMPUTER & OMPUTER & IINFORMATION NFORMATION SSCIENCES CIENCES DDEPARTMENTEPARTMENT 3

Computing Available Expressions

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

Remember these!

Page 4: Optimizing Compilers CISC 673 Spring 2009 More Data flow analysis

UUNIVERSITYNIVERSITY OFOF D DELAWARE ELAWARE • • C COMPUTER & OMPUTER & IINFORMATION NFORMATION SSCIENCES CIENCES DDEPARTMENTEPARTMENT 4

Avail Expressions Using Bit Vectors

1 = avail; 0 = not Boundary condition

Forward Flow on Entry Backward Flow on Exit

Initial conditions Merge operator

Page 5: Optimizing Compilers CISC 673 Spring 2009 More Data flow analysis

UUNIVERSITYNIVERSITY OFOF D DELAWARE ELAWARE • • C COMPUTER & OMPUTER & IINFORMATION NFORMATION SSCIENCES CIENCES DDEPARTMENTEPARTMENT

Avail Expressions Using Bit Vectors

1=avail0=not

(A+B)(X+Y)

10 = (A+B) avail (X+Y) not

11 = both avail

Note: Empty entry and exit blocks added to CFGTo save space not pictured here!

Page 6: Optimizing Compilers CISC 673 Spring 2009 More Data flow analysis

UUNIVERSITYNIVERSITY OFOF D DELAWARE ELAWARE • • C COMPUTER & OMPUTER & IINFORMATION NFORMATION SSCIENCES CIENCES DDEPARTMENTEPARTMENT

Avail Expressions Using Bit Vectors

1=avail0=not

(A+B)(X+Y)

What is Merge Operator?Remember original equation

Page 7: Optimizing Compilers CISC 673 Spring 2009 More Data flow analysis

UUNIVERSITYNIVERSITY OFOF D DELAWARE ELAWARE • • C COMPUTER & OMPUTER & IINFORMATION NFORMATION SSCIENCES CIENCES DDEPARTMENTEPARTMENT

Avail Expressions Using Bit Vectors

1=avail0=not

(A+B)(X+Y)

Merge: and

What is Boundary Condition?Remember original algorithm

(⋀)

Page 8: Optimizing Compilers CISC 673 Spring 2009 More Data flow analysis

UUNIVERSITYNIVERSITY OFOF D DELAWARE ELAWARE • • C COMPUTER & OMPUTER & IINFORMATION NFORMATION SSCIENCES CIENCES DDEPARTMENTEPARTMENT

Avail Expressions Using Bit Vectors

1=avail0=not

(A+B)(X+Y)

Merge: and

Boundary Condition

Now must initializeOUT of blocks.

Initial Condition?(⋀)

00

Page 9: Optimizing Compilers CISC 673 Spring 2009 More Data flow analysis

UUNIVERSITYNIVERSITY OFOF D DELAWARE ELAWARE • • C COMPUTER & OMPUTER & IINFORMATION NFORMATION SSCIENCES CIENCES DDEPARTMENTEPARTMENT

Initial Conditions?

What is needed so loops work? Needs to be identify for merge function

X ⋀ ? = X

Page 10: Optimizing Compilers CISC 673 Spring 2009 More Data flow analysis

UUNIVERSITYNIVERSITY OFOF D DELAWARE ELAWARE • • C COMPUTER & OMPUTER & IINFORMATION NFORMATION SSCIENCES CIENCES DDEPARTMENTEPARTMENT

Initial Conditions?

What is needed so loops work? Needs to be identify for merge function

X ⋀ 1 = X

Page 11: Optimizing Compilers CISC 673 Spring 2009 More Data flow analysis

UUNIVERSITYNIVERSITY OFOF D DELAWARE ELAWARE • • C COMPUTER & OMPUTER & IINFORMATION NFORMATION SSCIENCES CIENCES DDEPARTMENTEPARTMENT

Avail Expressions Using Bit Vectors

1=avail0=not

(A+B)(X+Y)

Merge: and(⋀)

00

1111

11

out=gen ⋁ (in ⋀ kill)─1.

2. 3.

4.

11

in[b]=⋀p pred(b)out[p]

gen and kill are constants!─

Page 12: Optimizing Compilers CISC 673 Spring 2009 More Data flow analysis

UUNIVERSITYNIVERSITY OFOF D DELAWARE ELAWARE • • C COMPUTER & OMPUTER & IINFORMATION NFORMATION SSCIENCES CIENCES DDEPARTMENTEPARTMENT

Avail Expressions Using Bit Vectors

1=avail0=not

(A+B)(X+Y)

Merge: and(⋀)

00

1111

11

out=gen ⋁ (in ⋀ kill)─1.

2. 3.

4.

out1= ??11

in[b]=⋀p pred(b)out[p]

Page 13: Optimizing Compilers CISC 673 Spring 2009 More Data flow analysis

UUNIVERSITYNIVERSITY OFOF D DELAWARE ELAWARE • • C COMPUTER & OMPUTER & IINFORMATION NFORMATION SSCIENCES CIENCES DDEPARTMENTEPARTMENT

Avail Expressions Using Bit Vectors

1=avail0=not

(A+B)(X+Y)

Merge: and(⋀)

00

1111

11

out=gen ⋁ (in ⋀ kill)─1.

2. 3.

4.

out1= 11out2= ??

11

in[b]=⋀p pred(b)out[p]

Page 14: Optimizing Compilers CISC 673 Spring 2009 More Data flow analysis

UUNIVERSITYNIVERSITY OFOF D DELAWARE ELAWARE • • C COMPUTER & OMPUTER & IINFORMATION NFORMATION SSCIENCES CIENCES DDEPARTMENTEPARTMENT

Avail Expressions Using Bit Vectors

1=avail0=not

(A+B)(X+Y)

Merge: and(⋀)

00

1111

11

out=gen ⋁ (in ⋀ kill)─1.

2. 3.

4.

out1= 11out2= 00 ⋁ (?? ⋀ ??)

11

in[b]=⋀p pred(b)out[p]

Page 15: Optimizing Compilers CISC 673 Spring 2009 More Data flow analysis

UUNIVERSITYNIVERSITY OFOF D DELAWARE ELAWARE • • C COMPUTER & OMPUTER & IINFORMATION NFORMATION SSCIENCES CIENCES DDEPARTMENTEPARTMENT

Avail Expressions Using Bit Vectors

1=avail0=not

(A+B)(X+Y)

Merge: and(⋀)

00

1111

11

out=gen ⋁ (in ⋀ kill)─1.

2. 3.

4.

out1= 11out2= 00 ⋁ (11 ⋀ ??)

11

in[b]=⋀p pred(b)out[p]

Page 16: Optimizing Compilers CISC 673 Spring 2009 More Data flow analysis

UUNIVERSITYNIVERSITY OFOF D DELAWARE ELAWARE • • C COMPUTER & OMPUTER & IINFORMATION NFORMATION SSCIENCES CIENCES DDEPARTMENTEPARTMENT

Avail Expressions Using Bit Vectors

1=avail0=not

(A+B)(X+Y)

Merge: and(⋀)

00

11

11

out=gen ⋁ (in ⋀ kill)─1.

2. 3.

4.

out1= 11out2= 00 ⋁ (11 ⋀ 01)

11

= 01out3= ??01

in[b]=⋀p pred(b)out[p]

Page 17: Optimizing Compilers CISC 673 Spring 2009 More Data flow analysis

UUNIVERSITYNIVERSITY OFOF D DELAWARE ELAWARE • • C COMPUTER & OMPUTER & IINFORMATION NFORMATION SSCIENCES CIENCES DDEPARTMENTEPARTMENT

Avail Expressions Using Bit Vectors

1=avail0=not

(A+B)(X+Y)

Merge: and(⋀)

00

11

11

out=gen ⋁ (in ⋀ kill)─1.

2. 3.

4.

out1= 11out2= 00 ⋁ (11 ⋀ 01)

11

= 01out3= 01 ⋁ (?? ⋀ ??)01

in[b]=⋀p pred(b)out[p]

Page 18: Optimizing Compilers CISC 673 Spring 2009 More Data flow analysis

UUNIVERSITYNIVERSITY OFOF D DELAWARE ELAWARE • • C COMPUTER & OMPUTER & IINFORMATION NFORMATION SSCIENCES CIENCES DDEPARTMENTEPARTMENT

Avail Expressions Using Bit Vectors

1=avail0=not

(A+B)(X+Y)

Merge: and(⋀)

00

11

11

out=gen ⋁ (in ⋀ kill)─1.

2. 3.

4.

out1= 11out2= 00 ⋁ (11 ⋀ 01)

11

= 01out3= 01 ⋁ (11 ⋀ 11)01

= 11

in[b]=⋀p pred(b)out[p]

Page 19: Optimizing Compilers CISC 673 Spring 2009 More Data flow analysis

UUNIVERSITYNIVERSITY OFOF D DELAWARE ELAWARE • • C COMPUTER & OMPUTER & IINFORMATION NFORMATION SSCIENCES CIENCES DDEPARTMENTEPARTMENT

Avail Expressions Using Bit Vectors

1=avail0=not

(A+B)(X+Y)

Merge: and(⋀)

00

11

11

out=gen ⋁ (in ⋀ kill)─1.

2. 3.

4.

out1= 11out2= 00 ⋁ (11 ⋀ 01)

11

= 01out3= 01 ⋁ (11 ⋀ 11)01

= 11out4= ??

in[b]=⋀p pred(b)out[p]

Page 20: Optimizing Compilers CISC 673 Spring 2009 More Data flow analysis

UUNIVERSITYNIVERSITY OFOF D DELAWARE ELAWARE • • C COMPUTER & OMPUTER & IINFORMATION NFORMATION SSCIENCES CIENCES DDEPARTMENTEPARTMENT

Avail Expressions Using Bit Vectors

1=avail0=not

(A+B)(X+Y)

Merge: and(⋀)

00

11

out=gen ⋁ (in ⋀ kill)─1.

2. 3.

4.

out1= 11out2= 00 ⋁ (11 ⋀ 01)

11

= 01out3= 01 ⋁ (11 ⋀ 11)01

= 11out4= 00 ⋁ (01 ⋀ 11)

= 01 01

in[b]=⋀p pred(b)out[p]

Page 21: Optimizing Compilers CISC 673 Spring 2009 More Data flow analysis

UUNIVERSITYNIVERSITY OFOF D DELAWARE ELAWARE • • C COMPUTER & OMPUTER & IINFORMATION NFORMATION SSCIENCES CIENCES DDEPARTMENTEPARTMENT 21

Constant Propagation

Along every path to point p,variable v has same “known” value

Specialize computation at p based on v’s value

Page 22: Optimizing Compilers CISC 673 Spring 2009 More Data flow analysis

UUNIVERSITYNIVERSITY OFOF D DELAWARE ELAWARE • • C COMPUTER & OMPUTER & IINFORMATION NFORMATION SSCIENCES CIENCES DDEPARTMENTEPARTMENT 22

Constant Propagation

Lattice (V, ≤) Top ⊤

Not a Constant Bottom ⊥

Unknown

… -2 -1 0 1 2 ...

The Lattice of CP

Hasse diagram

Page 23: Optimizing Compilers CISC 673 Spring 2009 More Data flow analysis

UUNIVERSITYNIVERSITY OFOF D DELAWARE ELAWARE • • C COMPUTER & OMPUTER & IINFORMATION NFORMATION SSCIENCES CIENCES DDEPARTMENTEPARTMENT 23

Some Lattice Theory

Generalized Meet Operator ⊔ Used at “merge” points Avail Expression:

Least Upper Bound (LUB)

X ⊔ Y = least element Z s.t.

X ≤ Z and Y ≤ Z

Page 24: Optimizing Compilers CISC 673 Spring 2009 More Data flow analysis

UUNIVERSITYNIVERSITY OFOF D DELAWARE ELAWARE • • C COMPUTER & OMPUTER & IINFORMATION NFORMATION SSCIENCES CIENCES DDEPARTMENTEPARTMENT 24

Concrete Example: Available Expressions

{ }

{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},

meet

Page 25: Optimizing Compilers CISC 673 Spring 2009 More Data flow analysis

UUNIVERSITYNIVERSITY OFOF D DELAWARE ELAWARE • • C COMPUTER & OMPUTER & IINFORMATION NFORMATION SSCIENCES CIENCES DDEPARTMENTEPARTMENT 25

More Lattice Theory: Const Prop

⊥ ≤ anything ∀x ⊥ ⊔ x = x anything ≤ ⊤ ∀x x ⊔ ⊤= ⊤ ∀x x ⊔ x = x

… -2 -1 0 1 2 ...

The Lattice of CP

Page 26: Optimizing Compilers CISC 673 Spring 2009 More Data flow analysis

UUNIVERSITYNIVERSITY OFOF D DELAWARE ELAWARE • • C COMPUTER & OMPUTER & IINFORMATION NFORMATION SSCIENCES CIENCES DDEPARTMENTEPARTMENT 26

Relate to Constant Prop?!

i and j are integer values i ⊔ i = i i ⊔ j = ⊤ if i ≠ j

Page 27: Optimizing Compilers CISC 673 Spring 2009 More Data flow analysis

UUNIVERSITYNIVERSITY OFOF D DELAWARE ELAWARE • • C COMPUTER & OMPUTER & IINFORMATION NFORMATION SSCIENCES CIENCES DDEPARTMENTEPARTMENT 27

What is X in Block 3?

1. 2.

3.

Page 28: Optimizing Compilers CISC 673 Spring 2009 More Data flow analysis

UUNIVERSITYNIVERSITY OFOF D DELAWARE ELAWARE • • C COMPUTER & OMPUTER & IINFORMATION NFORMATION SSCIENCES CIENCES DDEPARTMENTEPARTMENT 28

What is X in Block 3?

1. 2.

3.

x is ⊤

Page 29: Optimizing Compilers CISC 673 Spring 2009 More Data flow analysis

UUNIVERSITYNIVERSITY OFOF D DELAWARE ELAWARE • • C COMPUTER & OMPUTER & IINFORMATION NFORMATION SSCIENCES CIENCES DDEPARTMENTEPARTMENT 29

Top ⊤ versus Bottom ⊥

⊤ means definitely NOT a constant Inputs are ⊤

⊥ means Undefined Could be constant but we do not

know!

Page 30: Optimizing Compilers CISC 673 Spring 2009 More Data flow analysis

UUNIVERSITYNIVERSITY OFOF D DELAWARE ELAWARE • • C COMPUTER & OMPUTER & IINFORMATION NFORMATION SSCIENCES CIENCES DDEPARTMENTEPARTMENT 30

Constant Propagation Problem

Variable v has constant value c at point p, iff ∀ paths from entry to p, the most recently assigned value for v is c

Page 31: Optimizing Compilers CISC 673 Spring 2009 More Data flow analysis

UUNIVERSITYNIVERSITY OFOF D DELAWARE ELAWARE • • C COMPUTER & OMPUTER & IINFORMATION NFORMATION SSCIENCES CIENCES DDEPARTMENTEPARTMENT 31

Constant Prop Example

Meet Operator = ⊔ Identity= ? X ⊔ ? = X

Page 32: Optimizing Compilers CISC 673 Spring 2009 More Data flow analysis

UUNIVERSITYNIVERSITY OFOF D DELAWARE ELAWARE • • C COMPUTER & OMPUTER & IINFORMATION NFORMATION SSCIENCES CIENCES DDEPARTMENTEPARTMENT 32

Constant Prop Example

Meet Operator = ⊔ Identify= ⊥ X ⊔ ⊥ = X Initial Condition?

Page 33: Optimizing Compilers CISC 673 Spring 2009 More Data flow analysis

UUNIVERSITYNIVERSITY OFOF D DELAWARE ELAWARE • • C COMPUTER & OMPUTER & IINFORMATION NFORMATION SSCIENCES CIENCES DDEPARTMENTEPARTMENT 33

Constant Prop Example

Meet Operator = ⊔ Identify= ⊥ X ⊔ ⊥ = X Initial Condition Boundary Condition?

⊥⊥⊥

⊥⊥⊥⊥⊥⊥

⊥⊥⊥

XYZ

Page 34: Optimizing Compilers CISC 673 Spring 2009 More Data flow analysis

UUNIVERSITYNIVERSITY OFOF D DELAWARE ELAWARE • • C COMPUTER & OMPUTER & IINFORMATION NFORMATION SSCIENCES CIENCES DDEPARTMENTEPARTMENT 34

Constant Prop Example

Meet Operator = ⊔ Identify= ⊥ X ⊔ ⊥ = X Initial Condition Boundary Condition

⊥⊥⊥

⊥⊥⊥⊥⊥⊥

⊥⊥⊥

⊥⊥⊥

1.

2. 3.

4.

XYZ

Page 35: Optimizing Compilers CISC 673 Spring 2009 More Data flow analysis

UUNIVERSITYNIVERSITY OFOF D DELAWARE ELAWARE • • C COMPUTER & OMPUTER & IINFORMATION NFORMATION SSCIENCES CIENCES DDEPARTMENTEPARTMENT 35

Constant Prop Example

⊥⊥⊥

⊥⊥⊥⊥⊥⊥

⊥⊥⊥

1.

2. 3.

4.

out1= ???⊥⊥⊥XYZ

Page 36: Optimizing Compilers CISC 673 Spring 2009 More Data flow analysis

UUNIVERSITYNIVERSITY OFOF D DELAWARE ELAWARE • • C COMPUTER & OMPUTER & IINFORMATION NFORMATION SSCIENCES CIENCES DDEPARTMENTEPARTMENT 36

Constant Prop Example

⊥⊥⊥⊥⊥⊥

⊥⊥⊥

1.

2. 3.

4.

out1= 1⊥⊥out2= ???

⊥⊥⊥

1⊥⊥

XYZ

Page 37: Optimizing Compilers CISC 673 Spring 2009 More Data flow analysis

UUNIVERSITYNIVERSITY OFOF D DELAWARE ELAWARE • • C COMPUTER & OMPUTER & IINFORMATION NFORMATION SSCIENCES CIENCES DDEPARTMENTEPARTMENT 37

Constant Prop Example

⊥⊥⊥

⊥⊥⊥

1.

2. 3.

4.

out1= 1⊥⊥out2= 023out3= ???

⊥⊥⊥

1⊥⊥

023

XYZ

Page 38: Optimizing Compilers CISC 673 Spring 2009 More Data flow analysis

UUNIVERSITYNIVERSITY OFOF D DELAWARE ELAWARE • • C COMPUTER & OMPUTER & IINFORMATION NFORMATION SSCIENCES CIENCES DDEPARTMENTEPARTMENT 38

Constant Prop Example

⊥⊥⊥

1.

2. 3.

4.

out1= 1⊥⊥out2= 023out3= 12⊥out4= ???

⊥⊥⊥

1⊥⊥

023

XYZ

12⊥

Page 39: Optimizing Compilers CISC 673 Spring 2009 More Data flow analysis

UUNIVERSITYNIVERSITY OFOF D DELAWARE ELAWARE • • C COMPUTER & OMPUTER & IINFORMATION NFORMATION SSCIENCES CIENCES DDEPARTMENTEPARTMENT 39

Constant Prop Example

1.

2. 3.

4.

out1= 1⊥⊥out2= 023out3= 12⊥

out4= ⊤23

⊥⊥⊥

1⊥⊥

023

XYZ

12⊥

⊤23

Does this make sense?

Page 40: Optimizing Compilers CISC 673 Spring 2009 More Data flow analysis

UUNIVERSITYNIVERSITY OFOF D DELAWARE ELAWARE • • C COMPUTER & OMPUTER & IINFORMATION NFORMATION SSCIENCES CIENCES DDEPARTMENTEPARTMENT 40

Next Time

Static-Single Assignment (SSA Form)

Read Efficiently computing static single

assignment form and the control dependence graph, Cytron et al.

http://portal.acm.org/citation.cfm?id=115320