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

Optimizing Compilers CISC 673 Spring 2009 More Control Flow

  • Upload
    brier

  • View
    52

  • Download
    0

Embed Size (px)

DESCRIPTION

Optimizing Compilers CISC 673 Spring 2009 More Control Flow. John Cavazos University of Delaware. Clarification. Leaders are The entry point of the function Any instruction that is a target of a branch Any instruction following a (conditional or unconditional ) branch. - PowerPoint PPT Presentation

Citation preview

Page 1: Optimizing Compilers CISC 673 Spring 2009 More  Control Flow

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

Optimizing CompilersCISC 673

Spring 2009More Control Flow

John CavazosUniversity of Delaware

Page 2: Optimizing Compilers CISC 673 Spring 2009 More  Control Flow

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

Clarification

Leaders are The entry point of the function Any instruction that is a target

of a branch Any instruction following a

(conditional or unconditional) branch

Page 3: Optimizing Compilers CISC 673 Spring 2009 More  Control Flow

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

Additional Clarification

Tree edge:in CFG & ST

Advancing edge:(v,w) not tree edge but w is descendant of v in ST

Back edge:(v,w): v=w or w is proper ancestor of v in ST

Cross edge:(v,w): w neither ancestor nor descendant of v in ST

Page 4: Optimizing Compilers CISC 673 Spring 2009 More  Control Flow

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

Class Problem: Identify Edgesprocedure DFST (v) pre(v) = vnum++ InStack(v) = true for w in Succ(v) if not InTree(w) add v→w to TreeEdges InTree(w) = true DFST(w) else if pre(v) < pre(w) add v→w to AdvancingEdges else if InStack(w) add v→w to BackEdges else add v→w to CrossEdges InStack(v) = false

for v in V do inTree(v) = false vnum = 0InTree(root)DFST(root)

Page 5: Optimizing Compilers CISC 673 Spring 2009 More  Control Flow

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

Class Problem: Answerprocedure DFST (v) pre(v) = vnum++ InStack(v) = true for w in Succ(v) if not InTree(w) add v→w to TreeEdges InTree(w) = true DFST(w) else if pre(v) < pre(w) add v→w to AdvancingEdges else if InStack(w) add v→w to BackEdges else add v→w to CrossEdges InStack(v) = false

for v in V do inTree(v) = false vnum = 0InTree(root)DFST(root)

Page 6: Optimizing Compilers CISC 673 Spring 2009 More  Control Flow

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

Reducibility

Natural loops: single entry node: no jumps into middle of

loop requires back edge into loop header (single

entry point)

Reducible: hierarchical, “well-structured” flowgraph reducible iff all loops in it

natural

Page 7: Optimizing Compilers CISC 673 Spring 2009 More  Control Flow

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

Reducibility Example

A

B

C

D

E

F G

Entry

A

B

C

D

E

F G

Entry

reducible graph irreducible graph

Some languages only permit procedures with reducible flowgraphs (e.g., Java)

“GOTO Considered Harmful”:introduces irreducibility FORTRAN C C++

DFST does not find unique header in irreducible graphs

Page 8: Optimizing Compilers CISC 673 Spring 2009 More  Control Flow

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

Dominance Node d dominates node i (“d dom i” )

if every path from Entry to i includes d Reflexive: a dom a Transitive:if a dom b and b dom c then

a dom c Antisymmetric: if a dom b and b dom a

then b=a

Page 9: Optimizing Compilers CISC 673 Spring 2009 More  Control Flow

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

Immediate Dominance

a idom b iff a dom b there is no c such that a dom c, c dom b (c a, c b)

Idom’s: each node has unique idom relation forms a dominator tree

Page 10: Optimizing Compilers CISC 673 Spring 2009 More  Control Flow

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

Dominance Tree

A

B

C

D

E

F G

Entry

Immediate and other dominators:(excluding Entry) a idom b; a dom a, b, c,

d, e, f, g b idom c; b dom b, c,

d, e, f, g c idom d; c dom c, d, e,

f, g d idom e; d dom d, e, f,

g e idom f, e idom g; e

dom e, f, g

A

B

C

D

E

F G

Entry

control-flow graph dominator tree

Page 11: Optimizing Compilers CISC 673 Spring 2009 More  Control Flow

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

Dominator Tree?

Page 12: Optimizing Compilers CISC 673 Spring 2009 More  Control Flow

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

Dominator Tree

Page 13: Optimizing Compilers CISC 673 Spring 2009 More  Control Flow

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

Reducible Graph Test

Graph is reducible iff …all back edges are ones whose

head dominates its tail

Page 14: Optimizing Compilers CISC 673 Spring 2009 More  Control Flow

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

Why is this not a Reducible Graph?

Page 15: Optimizing Compilers CISC 673 Spring 2009 More  Control Flow

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

Why is this not a Reducible Graph?

Remember: head must dominate tail of back edge.

Page 16: Optimizing Compilers CISC 673 Spring 2009 More  Control Flow

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

Nonreducible Graph

Spanning TreeB (head) does not dominate C

(tail)

Page 17: Optimizing Compilers CISC 673 Spring 2009 More  Control Flow

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

Reducible Graph?

Build Spanning TreeBack edges: head must dominate tail

Page 18: Optimizing Compilers CISC 673 Spring 2009 More  Control Flow

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

Natural Loops

Now we can find natural loops Given back edge m → n, natural

loop is n (loop header) and nodes that can reach m without passing through n

Page 19: Optimizing Compilers CISC 673 Spring 2009 More  Control Flow

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

Find Natural Loops?

Page 20: Optimizing Compilers CISC 673 Spring 2009 More  Control Flow

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

Natural Loops

Back Edge Natural Loop J → G {G,H,J} G → D {D,E,F,G,H,J} D → C {C,D,E,F,G,H,J} H → C {C,D,E,F,G,H,J} I → A {A,B,C,D,E,F,G,H,I,J}

Page 21: Optimizing Compilers CISC 673 Spring 2009 More  Control Flow

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

Strongly-Connected Components

What about irreducible flowgraphs? Most general loop form = strongly-

connected component (SCC): subgraph S such that every node in S

reachable from every other node by path including only edges in S

Maximal SCC: S is maximal SCC if it is the largest SCC

that contains S.

Page 22: Optimizing Compilers CISC 673 Spring 2009 More  Control Flow

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

SCC Example

Entry

B1

B2

B3

Strongly-connected component

Maximal strongly-connected component

Page 23: Optimizing Compilers CISC 673 Spring 2009 More  Control Flow

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

Computing Maximal SCCs

Tarjan’s algorithm: Computes all maximal SCCs Linear-time (in number of nodes and

edges) CLR algorithm:

Also linear-time Simpler:

Two depth-first searches and one “transpose”:reverse all graph edge

Page 24: Optimizing Compilers CISC 673 Spring 2009 More  Control Flow

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

Conclusion

Introduced control-flow analysis Basic blocks Control-flow graphs

Discussed application of graph algorithms: loops

Spanning trees, depth-first spanning trees Reducibility Dominators Dominator tree Strongly-connected components

Page 25: Optimizing Compilers CISC 673 Spring 2009 More  Control Flow

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

Next Time

Dataflow analysis Read Marlowe and Ryder paper