advanced compilers cmpsci 710 spring 2003 dominators, etc

27
UNIVERSITY NIVERSITY OF OF M MASSACHUSETTS, ASSACHUSETTS, AMHERST MHERST D DEPARTMENT EPARTMENT OF OF COMPUTER OMPUTER SCIENCE CIENCE Advanced Compilers CMPSCI 710 Spring 2003 Dominators, etc. Emery Berger University of Massachusetts, Amherst

Upload: makoto

Post on 19-Jan-2016

37 views

Category:

Documents


0 download

DESCRIPTION

Advanced Compilers CMPSCI 710 Spring 2003 Dominators, etc. Emery Berger University of Massachusetts, Amherst. Dominators, etc. Last time Live variable analysis backwards problem Constant propagation algorithms def-use chains Today SSA-form dominators. Def-Use Chains: Problem. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Advanced Compilers CMPSCI 710 Spring 2003 Dominators, etc

UUNIVERSITYNIVERSITY OFOF M MASSACHUSETTS, ASSACHUSETTS, AAMHERSTMHERST • • D DEPARTMENTEPARTMENT OF OF CCOMPUTER OMPUTER SSCIENCECIENCE

Advanced CompilersCMPSCI 710Spring 2003

Dominators, etc.

Emery BergerUniversity of Massachusetts, Amherst

Page 2: Advanced Compilers CMPSCI 710 Spring 2003 Dominators, etc

UUNIVERSITYNIVERSITY OFOF M MASSACHUSETTS, ASSACHUSETTS, AAMHERSTMHERST • • D DEPARTMENTEPARTMENT OF OF CCOMPUTER OMPUTER SSCIENCECIENCE 2

Dominators, etc.

Last time Live variable analysis

backwards problem Constant propagation

algorithms def-use chains

Today SSA-form dominators

Page 3: Advanced Compilers CMPSCI 710 Spring 2003 Dominators, etc

UUNIVERSITYNIVERSITY OFOF M MASSACHUSETTS, ASSACHUSETTS, AAMHERSTMHERST • • D DEPARTMENTEPARTMENT OF OF CCOMPUTER OMPUTER SSCIENCECIENCE 3

Def-Use Chains: Problem

switch (j) case x: i à 1; break; case y: i à 2; break; case z: i à 3; break;switch (k) case x: a à i; break; case y: b à i; break; case z: c à i; break;

worst-case size of graph = O(D*U) = O(N2)

Page 4: Advanced Compilers CMPSCI 710 Spring 2003 Dominators, etc

UUNIVERSITYNIVERSITY OFOF M MASSACHUSETTS, ASSACHUSETTS, AAMHERSTMHERST • • D DEPARTMENTEPARTMENT OF OF CCOMPUTER OMPUTER SSCIENCECIENCE 4

SSA Form

Static single assignment each assignment to variable gets

unique name all uses reached by that assignment

are renamed exactly one def per use sparse program representation:

use-def chain = (variable, [use1, use2…])

Page 5: Advanced Compilers CMPSCI 710 Spring 2003 Dominators, etc

UUNIVERSITYNIVERSITY OFOF M MASSACHUSETTS, ASSACHUSETTS, AAMHERSTMHERST • • D DEPARTMENTEPARTMENT OF OF CCOMPUTER OMPUTER SSCIENCECIENCE 5

SSA Transformations

v à 4 à v+5v à 6 à v+7

v1 Ã 4

à v1+5

v2 Ã 6

à v2+7

Easy for straight-line code, but what about control flow?

New variable for each assignment, rename uses

Page 6: Advanced Compilers CMPSCI 710 Spring 2003 Dominators, etc

UUNIVERSITYNIVERSITY OFOF M MASSACHUSETTS, ASSACHUSETTS, AAMHERSTMHERST • • D DEPARTMENTEPARTMENT OF OF CCOMPUTER OMPUTER SSCIENCECIENCE 6

-Functions

At each join, add special assignment:“ function”: operands indicate which assignments

reach join jth operand = jth predecessor

If control reaches join from jth predecessor, then value of (R,S,…) is value of jth operand

Page 7: Advanced Compilers CMPSCI 710 Spring 2003 Dominators, etc

UUNIVERSITYNIVERSITY OFOF M MASSACHUSETTS, ASSACHUSETTS, AAMHERSTMHERST • • D DEPARTMENTEPARTMENT OF OF CCOMPUTER OMPUTER SSCIENCECIENCE 7

SSA Transformation, function

if P then v à 4 else v à 6/* use v */

if P then v1 Ã 4

else v2 Ã 6

v3 Ã (v1, v2)

/* use v3 */

Page 8: Advanced Compilers CMPSCI 710 Spring 2003 Dominators, etc

UUNIVERSITYNIVERSITY OFOF M MASSACHUSETTS, ASSACHUSETTS, AAMHERSTMHERST • • D DEPARTMENTEPARTMENT OF OF CCOMPUTER OMPUTER SSCIENCECIENCE 8

SSA Example II

v à 1while (v < 10) v à v + 1

1: v à 12: if (v < 10)3: v à v + 14: goto 2

Page 9: Advanced Compilers CMPSCI 710 Spring 2003 Dominators, etc

UUNIVERSITYNIVERSITY OFOF M MASSACHUSETTS, ASSACHUSETTS, AAMHERSTMHERST • • D DEPARTMENTEPARTMENT OF OF CCOMPUTER OMPUTER SSCIENCECIENCE 9

SSA Example III

switch (j) case x: i à 1; break; case y: i à 2; break; case z: i à 3; break;switch (k) case x: a à i; break; case y: b à i; break; case z: c à i; break;

Page 10: Advanced Compilers CMPSCI 710 Spring 2003 Dominators, etc

UUNIVERSITYNIVERSITY OFOF M MASSACHUSETTS, ASSACHUSETTS, AAMHERSTMHERST • • D DEPARTMENTEPARTMENT OF OF CCOMPUTER OMPUTER SSCIENCECIENCE 10

Placing functions

Safe to put functions for every variable at every join point

But: inefficient – not necessarily sparse! loses information

Goal: minimal nodes, subject to need

Page 11: Advanced Compilers CMPSCI 710 Spring 2003 Dominators, etc

UUNIVERSITYNIVERSITY OFOF M MASSACHUSETTS, ASSACHUSETTS, AAMHERSTMHERST • • D DEPARTMENTEPARTMENT OF OF CCOMPUTER OMPUTER SSCIENCECIENCE 11

Function Requirement

Node Z needs function for V if: Z is convergence point for two paths

originating at different nodes both originating nodes contain

assignments to V or also need functions for V

v = 1 v = 2

Z

v1 = 1 v2 = 2

v3=(v1,v2)

Z

Page 12: Advanced Compilers CMPSCI 710 Spring 2003 Dominators, etc

UUNIVERSITYNIVERSITY OFOF M MASSACHUSETTS, ASSACHUSETTS, AAMHERSTMHERST • • D DEPARTMENTEPARTMENT OF OF CCOMPUTER OMPUTER SSCIENCECIENCE 12

Minimal Placement of functions

Naïve computation of need is expensive:must examine all triples in graph

Can be done in O(N) time Relies on dominance frontier

computation[Cytron et al., 1991]

Also can be used to compute control dependence graph

Page 13: Advanced Compilers CMPSCI 710 Spring 2003 Dominators, etc

UUNIVERSITYNIVERSITY OFOF M MASSACHUSETTS, ASSACHUSETTS, AAMHERSTMHERST • • D DEPARTMENTEPARTMENT OF OF CCOMPUTER OMPUTER SSCIENCECIENCE 13

Control Dependence Graph

Identifies conditions affecting statement execution

Statement is control dependent on branch if: one edge from branch

definitely causes statement to execute

another edge can cause statement to be skipped

Page 14: Advanced Compilers CMPSCI 710 Spring 2003 Dominators, etc

UUNIVERSITYNIVERSITY OFOF M MASSACHUSETTS, ASSACHUSETTS, AAMHERSTMHERST • • D DEPARTMENTEPARTMENT OF OF CCOMPUTER OMPUTER SSCIENCECIENCE 14

Control Dependence Example

if (a == 1) q à 2else if (a == 2) goto B goto Ab à 1A: c à 1B: d à 1

if (a==1)

q à 2

b à 1

c à 1

if (a==2)

d à 1

thenelse

Page 15: Advanced Compilers CMPSCI 710 Spring 2003 Dominators, etc

UUNIVERSITYNIVERSITY OFOF M MASSACHUSETTS, ASSACHUSETTS, AAMHERSTMHERST • • D DEPARTMENTEPARTMENT OF OF CCOMPUTER OMPUTER SSCIENCECIENCE 15

Dominators Before we do dominance frontiers, we

need to discuss other dominance relationships

x dominates y (x dom y) in CFG, all paths to y go through x Dom(v) = set of all vertices that dominate v Entry dominates every vertex

Reflexive: a dom a Transitive: a dom b, b dom c ! a dom c Antisymmetric: a dom b, b dom a ! b=a

Notice: in SSA form, a definition dominates its use

Page 16: Advanced Compilers CMPSCI 710 Spring 2003 Dominators, etc

UUNIVERSITYNIVERSITY OFOF M MASSACHUSETTS, ASSACHUSETTS, AAMHERSTMHERST • • D DEPARTMENTEPARTMENT OF OF CCOMPUTER OMPUTER SSCIENCECIENCE 16

Finding Dominators

Dom(v) = {v} Åp 2 PRED(v) Dom(p) Algorithm:

DOM(Entry) = {Entry}for v 2 V-{Entry} DOM(v) = Vrepeat changed = false for n 2 V-{Entry} olddom = DOM(n) DOM(n) = {n} [ (Åp 2 PRED(n) DOM(p))

if DOM(n) olddom changed = true

Page 17: Advanced Compilers CMPSCI 710 Spring 2003 Dominators, etc

UUNIVERSITYNIVERSITY OFOF M MASSACHUSETTS, ASSACHUSETTS, AAMHERSTMHERST • • D DEPARTMENTEPARTMENT OF OF CCOMPUTER OMPUTER SSCIENCECIENCE 17

Dominator Algorithm Example

DomA (Entry)

B

C D

E

F G (Exit)

Dom

Dom Dom

Dom

DomDom

DOM(Entry) = {Entry}for v 2 V-{Entry}

DOM(v) = Vrepeat changed = false for n 2 V-{Entry} olddom = DOM(n) DOM(n) = {n} [ (Åp 2 PRED(n) DOM(p))

if DOM(n) \neq olddom changed = true

Page 18: Advanced Compilers CMPSCI 710 Spring 2003 Dominators, etc

UUNIVERSITYNIVERSITY OFOF M MASSACHUSETTS, ASSACHUSETTS, AAMHERSTMHERST • • D DEPARTMENTEPARTMENT OF OF CCOMPUTER OMPUTER SSCIENCECIENCE 18

Other Dominators

Strict dominators Dom!(v) = Dom(v) – {v} antisymmetric & transitive

Immediate dominator Idom(v) = closest strict dominator of v d Idom v if

d Dom! v and 8w 2 Dom!(v): w Dom d antisymmetric Idom induces tree

Page 19: Advanced Compilers CMPSCI 710 Spring 2003 Dominators, etc

UUNIVERSITYNIVERSITY OFOF M MASSACHUSETTS, ASSACHUSETTS, AAMHERSTMHERST • • D DEPARTMENTEPARTMENT OF OF CCOMPUTER OMPUTER SSCIENCECIENCE 19

Dominator Example

DomDom!Idom

A (Entry)

B

C D

E

F G (Exit)

DomDom!Idom

DomDom!Idom

DomDom!Idom

DomDom!Idom

DomDom!Idom

DomDom!Idom

Page 20: Advanced Compilers CMPSCI 710 Spring 2003 Dominators, etc

UUNIVERSITYNIVERSITY OFOF M MASSACHUSETTS, ASSACHUSETTS, AAMHERSTMHERST • • D DEPARTMENTEPARTMENT OF OF CCOMPUTER OMPUTER SSCIENCECIENCE 20

Dominator Tree

A (Entry)

B

C D

E

F G (Exit)

A (Entry)

B

C D

E

F G (Exit)

Page 21: Advanced Compilers CMPSCI 710 Spring 2003 Dominators, etc

UUNIVERSITYNIVERSITY OFOF M MASSACHUSETTS, ASSACHUSETTS, AAMHERSTMHERST • • D DEPARTMENTEPARTMENT OF OF CCOMPUTER OMPUTER SSCIENCECIENCE 21

Inverse Dominators

Dom-1(v) = set of all vertices dominated by v

reflexive, antisymmetric, transitive

Page 22: Advanced Compilers CMPSCI 710 Spring 2003 Dominators, etc

UUNIVERSITYNIVERSITY OFOF M MASSACHUSETTS, ASSACHUSETTS, AAMHERSTMHERST • • D DEPARTMENTEPARTMENT OF OF CCOMPUTER OMPUTER SSCIENCECIENCE 22

Inverse Dominator Example

A (Entry)

B

C D

E

F G (Exit)

Dom(A): {A}Dom-1(A):

Dom(B): {A,B}Dom-1(B):

Dom(C): {A,B,C}Dom-1(C):

Dom(D): {A,B,D}Dom-1(D):

Dom(E): {A,B,E}Dom-1(E):

Dom(F): {A,B,E,F}Dom-1(F):

Dom(G): {A,B,E,G}Dom-1(G):

Page 23: Advanced Compilers CMPSCI 710 Spring 2003 Dominators, etc

UUNIVERSITYNIVERSITY OFOF M MASSACHUSETTS, ASSACHUSETTS, AAMHERSTMHERST • • D DEPARTMENTEPARTMENT OF OF CCOMPUTER OMPUTER SSCIENCECIENCE 23

Finally: Dominance Frontiers!

The dominance frontier DF(X) is set of all nodes Y such that: X dominates a predecessor of Y But X does not strictly dominate Y

DF(X) = {Y|(9 P 2 PRED(Y): X Dom P) Æ q X Dom! Y)

Page 24: Advanced Compilers CMPSCI 710 Spring 2003 Dominators, etc

UUNIVERSITYNIVERSITY OFOF M MASSACHUSETTS, ASSACHUSETTS, AAMHERSTMHERST • • D DEPARTMENTEPARTMENT OF OF CCOMPUTER OMPUTER SSCIENCECIENCE 24

Why Dominance Frontiers

Dominance frontier criterion: if node x contains def of a, then any

node z in DF(x) needs a function for a

intuition:at least two non-intersecting paths converge to z, and one path must contain node strictly dominated by x

Page 25: Advanced Compilers CMPSCI 710 Spring 2003 Dominators, etc

UUNIVERSITYNIVERSITY OFOF M MASSACHUSETTS, ASSACHUSETTS, AAMHERSTMHERST • • D DEPARTMENTEPARTMENT OF OF CCOMPUTER OMPUTER SSCIENCECIENCE 25

Dominance Frontier Example

S

X

A

B

DF(X) = {Y|( 9 P 2 PRED(Y): X Dom P) Æ q X Dom! Y)

node y is in dominance frontier of node x if:x dominates predecessor of y but does not strictly dominate y

Page 26: Advanced Compilers CMPSCI 710 Spring 2003 Dominators, etc

UUNIVERSITYNIVERSITY OFOF M MASSACHUSETTS, ASSACHUSETTS, AAMHERSTMHERST • • D DEPARTMENTEPARTMENT OF OF CCOMPUTER OMPUTER SSCIENCECIENCE 26

Dominance Frontier ExampleDom-1

SUCC(Dom-1)DF

A (Entry)

B

C D

E

F G (Exit)

Dom-1

SUCC(Dom-1)DF

Dom-1

SUCC(Dom-1)DF

Dom-1

SUCC(Dom-1)DF

Dom-1

SUCC(Dom-1)DF

Dom-1

SUCC(Dom-1)DF

Dom-1

SUCC(Dom-1)DF

DF(v) = SUCC(Dom-1(v)) – Dom!-

1(v)where Dom!-1(v) = Dom-1(v) – {v}

Page 27: Advanced Compilers CMPSCI 710 Spring 2003 Dominators, etc

UUNIVERSITYNIVERSITY OFOF M MASSACHUSETTS, ASSACHUSETTS, AAMHERSTMHERST • • D DEPARTMENTEPARTMENT OF OF CCOMPUTER OMPUTER SSCIENCECIENCE 27

Next Time

Computing dominance frontiers Computing SSA form