250 likes | 626 Views
Optimizing Compilers CISC 673 Spring 2011 More Control Flow. John Cavazos University of Delaware. Overview. Introduced control-flow analysis Basic blocks Control-flow graphs Discuss application of graph algorithms: loops Spanning trees, depth-first spanning trees Dominators Reducibility
E N D
Optimizing CompilersCISC 673Spring 2011More Control Flow John Cavazos University of Delaware
Overview • Introduced control-flow analysis • Basic blocks • Control-flow graphs • Discuss application of graph algorithms: loops • Spanning trees, depth-first spanning trees • Dominators • Reducibility • Dominator tree • Strongly-connected components
Dominance • Node ddominates node i (“d dom i” )if every path from Entry to i includes d Properties of Dominators • 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
Immediate Dominance • aidomb iff a dom bthere 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
Natural loops • Single entry node (d) • no jumps into middle of loop • d dominates all nodes in loop • Requires back edge into loop header (n→ d) • n is tail, d is head • single entry point • Natural loop of back edge (n→ d) • d + {all nodes that can reach n with touching d}
Reducible Loops • Reducible: hierarchical, “well-structured” • flowgraph reducible iff all loops in it natural reducible graph irreducible graph
Reducible Graph Test • Graph is reducible iff … all back edges are ones whose head dominates its tail
Reducible Loops (more examples) Loop Header Back edge Is this a Natural Loop? Why or why not?
Reducible Loops (more examples) Loop Header Back edge Yes, Natural Loop with Multiple Branches
Reducible Loops (more examples) Is this a Natural Loop? Why or why not?
Reducible Loops (more examples) Not a Natural Loop: 4→ 1 is back edge, but 1 (head) does not dominate 4 (tail)
Nonreducible Graph B (head) does not dominate C (tail)
Reducibility Example • Some languages only permit procedures with reducible flowgraphs (e.g., Java) • “GOTO Considered Harmful”: can introduce irreducibility • FORTRAN • C • C++
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
Reducible Graph? Construct Spanning Tree to identify back edges. Now check natural back edges property, i.e., head must dominate tail
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
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}
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.
SCC Example Entry Strongly-connected components (SCC) (B1, B2), (B2, B3), (B1, B2, B3) Maximal SCC (B1, B2, B3) B1 B2 B3
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
Next Time • Dataflow analysis • Read Marlowe and Ryder paper