Presentation is loading. Please wait.

Presentation is loading. Please wait.

Optimizing Compilers CISC 673 Spring 2009 More Control Flow

Similar presentations


Presentation on theme: "Optimizing Compilers CISC 673 Spring 2009 More Control Flow"— Presentation transcript:

1 Optimizing Compilers CISC 673 Spring 2009 More Control Flow
John Cavazos University of Delaware

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

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

4 Class Problem: Identify Edges
procedure 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 = 0 InTree(root) DFST(root) Work out answer on the board.. Tree Edges: Advancing Edges: Back Edges: Cross Edges: Etc…

5 Class Problem: Answer procedure 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 = 0 InTree(root) DFST(root) notes

6 Reducibility Natural loops: Reducible: hierarchical, “well-structured”
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

7 Reducibility Example 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 reducible graph irreducible graph

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

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

10 Dominance Tree 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 control-flow graph dominator tree

11 Dominator Tree?

12 Dominator Tree

13 Graph is reducible iff …
Reducible Graph Test Graph is reducible iff … all back edges are ones whose head dominates its tail

14 Why is this not a Reducible Graph?

15 Why is this not a Reducible Graph?
Remember: head must dominate tail of back edge.

16 B (head) does not dominate C (tail)
Nonreducible Graph Spanning Tree B (head) does not dominate C (tail)

17 Reducible Graph? Build Spanning Tree
Back edges: head must dominate tail

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

19 Find Natural Loops?

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}

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.

22 Strongly-connected component
SCC Example Entry Maximal strongly-connected component B1 B2 Strongly-connected component B3

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

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

25 Next Time Dataflow analysis Read Marlowe and Ryder paper


Download ppt "Optimizing Compilers CISC 673 Spring 2009 More Control Flow"

Similar presentations


Ads by Google