Download presentation
Presentation is loading. Please wait.
Published bySri Hermanto Modified over 6 years ago
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
Similar presentations
© 2024 SlidePlayer.com. Inc.
All rights reserved.