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

Optimizing Compilers CISC 673 Spring 2009 More Data flow analysis

  • Upload
    anneke

  • View
    34

  • Download
    3

Embed Size (px)

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

Citation preview

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