1 / 25

Optimizing Compilers CISC 673 Spring 2011 More Control Flow

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

albert
Télécharger la présentation

Optimizing Compilers CISC 673 Spring 2011 More Control Flow

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Optimizing CompilersCISC 673Spring 2011More Control Flow John Cavazos University of Delaware

  2. 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

  3. 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

  4. 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

  5. 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}

  6. Reducible Loops • Reducible: hierarchical, “well-structured” • flowgraph reducible iff all loops in it natural reducible graph irreducible graph

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

  8. Reducible Loops (more examples) Loop Header Back edge Is this a Natural Loop? Why or why not?

  9. Reducible Loops (more examples) Loop Header Back edge Yes, Natural Loop with Multiple Branches

  10. Reducible Loops (more examples) Is this a Natural Loop? Why or why not?

  11. Reducible Loops (more examples) Not a Natural Loop: 4→ 1 is back edge, but 1 (head) does not dominate 4 (tail)

  12. Why is this not a Reducible Graph?

  13. Nonreducible Graph B (head) does not dominate C (tail)

  14. Reducibility Example • Some languages only permit procedures with reducible flowgraphs (e.g., Java) • “GOTO Considered Harmful”: can introduce irreducibility • FORTRAN • C • C++

  15. 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

  16. Dominator Tree?

  17. Dominator Tree

  18. Reducible Graph? Construct Spanning Tree to identify back edges. Now check natural back edges property, i.e., head must dominate tail

  19. 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

  20. Find Natural Loops?

  21. 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}

  22. 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.

  23. SCC Example Entry Strongly-connected components (SCC) (B1, B2), (B2, B3), (B1, B2, B3) Maximal SCC (B1, B2, B3) B1 B2 B3

  24. 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

  25. Next Time • Dataflow analysis • Read Marlowe and Ryder paper

More Related