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

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 of Advanced Compilers CMPSCI 710 Spring 2003 Dominators, etc.

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