1 / 27

Advanced Compilers CMPSCI 710 Spring 2003 Dominators, etc.

Dive into dominators, SSA form, and control dependencies in advanced compiler theory. Understand algorithms, def-use chains, and dominance frontiers for efficient program analysis. Learn about dominance relationships, dominance frontiers, and dominance tree construction.

mhipps
Download Presentation

Advanced Compilers CMPSCI 710 Spring 2003 Dominators, etc.

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. Advanced CompilersCMPSCI 710Spring 2003Dominators, etc. Emery Berger University of Massachusetts, Amherst

  2. Dominators, etc. • Last time • Live variable analysis • backwards problem • Constant propagation • algorithms • def-use chains • Today • SSA-form • dominators

  3. Def-Use Chains: Problem • worst-case size of graph = O(D*U) = O(N2) switch (j) case x: i à 1; break; case y: i à 2; break; case z: i à 3; break; switch (k) case x: a à i; break; case y: b à i; break; case z: c à i; break;

  4. SSA Form • Static single assignment • each assignment to variable gets unique name • all uses reached by that assignment are renamed • exactly one def per use • sparse program representation:use-def chain = (variable, [use1, use2…])

  5. SSA Transformations • Easy for straight-line code, but what about control flow? • New variable for each assignment, rename uses v à 4 à v+5 v à 6 à v+7 v1à 4 à v1+5 v2à 6 à v2+7

  6. -Functions • At each join, add special assignment:“ function”: • operands indicate which assignments reach join • jth operand = jth predecessor • If control reaches join from jth predecessor, then value of (R,S,…) is value of jth operand

  7. SSA Transformation, function if P then v à 4 else v à 6 /* use v */ if P then v1à 4 else v2à 6 v3Ã(v1, v2) /* use v3 */

  8. SSA Example II v à 1 while (v < 10) v à v + 1 1: v à 1 2: if (v < 10) 3: v à v + 1 4: goto 2

  9. SSA Example III switch (j) case x: i à 1; break; case y: i à 2; break; case z: i à 3; break; switch (k) case x: a à i; break; case y: b à i; break; case z: c à i; break;

  10. Placing  functions • Safe to put  functions for every variable at every join point • But: • inefficient – not necessarily sparse! • loses information • Goal: minimal  nodes, subject to need

  11.  Function Requirement • Node Z needs  function for V if: • Z is convergence point for two paths originating at different nodes • both originating nodes contain assignments to V or also need  functions for V v = 1 v = 2 v1 = 1 v2 = 2 v3=(v1,v2) Z Z

  12. Minimal Placement of  functions • Naïve computation of need is expensive:must examine all triples in graph • Can be done in O(N) time • Relies on dominance frontier computation[Cytron et al., 1991] • Also can be used to compute control dependence graph

  13. Control Dependence Graph • Identifies conditions affecting statement execution • Statement is control dependent on branch if: • one edge from branchdefinitely causes statement to execute • another edge can cause statement to be skipped

  14. Control Dependence Example if (a == 1) q à 2 else if (a == 2) goto B goto A b à 1 A: c à 1 B: d à 1 if (a==1) q à 2 if (a==2) b à 1 else then c à 1 d à 1

  15. Dominators • Before we do dominance frontiers, we need to discuss other dominance relationships • x dominates y (x dom y) • in CFG, all paths to y go through x • Dom(v) = set of all vertices that dominate v • Entry dominates every vertex • Reflexive: a dom a • Transitive: a dom b, b dom c ! a dom c • Antisymmetric: a dom b, b dom a ! b=a • Notice: in SSA form, a definition dominates its use

  16. Finding Dominators • Dom(v) = {v} Åp 2 PRED(v)Dom(p) • Algorithm: DOM(Entry) = {Entry} for v 2 V-{Entry} DOM(v) = V repeat changed = false for n 2 V-{Entry} olddom = DOM(n) DOM(n) = {n} [ (Åp 2 PRED(n) DOM(p)) if DOM(n)  olddom changed = true

  17. Dominator Algorithm Example DOM(Entry) = {Entry} for v 2 V-{Entry} DOM(v) = V repeat changed = false for n 2 V-{Entry} olddom = DOM(n) DOM(n) = {n} [ (Åp 2 PRED(n) DOM(p)) if DOM(n) \neq olddom changed = true A (Entry) Dom B Dom C D Dom Dom E Dom F G (Exit) Dom Dom

  18. Other Dominators • Strict dominators • Dom!(v) = Dom(v) – {v} • antisymmetric & transitive • Immediate dominator • Idom(v) = closest strict dominator of v • d Idom v ifd Dom! v and 8w 2Dom!(v): w Dom d • antisymmetric • Idom induces tree

  19. Dominator Example A (Entry) Dom Dom! Idom Dom Dom! Idom B Dom Dom! Idom Dom Dom! Idom C D Dom Dom! Idom E Dom Dom! Idom Dom Dom! Idom F G (Exit)

  20. Dominator Tree A (Entry) A (Entry) B B C D C D E E F G (Exit) F G (Exit)

  21. Inverse Dominators • Dom-1(v) = set of all vertices dominated by v • reflexive, antisymmetric, transitive

  22. Inverse Dominator Example • Dom(A): {A}Dom-1(A): • Dom(B): {A,B}Dom-1(B): • Dom(C): {A,B,C}Dom-1(C): • Dom(D): {A,B,D}Dom-1(D): • Dom(E): {A,B,E}Dom-1(E): • Dom(F): {A,B,E,F}Dom-1(F): • Dom(G): {A,B,E,G}Dom-1(G): A (Entry) B C D E F G (Exit)

  23. Finally: Dominance Frontiers! • The dominance frontier DF(X) is set of all nodes Y such that: • X dominates a predecessor of Y • But X does not strictly dominate Y • DF(X) = {Y|(9P 2 PRED(Y): X Dom P)Æq X Dom! Y)

  24. Why Dominance Frontiers • Dominance frontier criterion: • if node x contains def of a, then any node z in DF(x) needs a  function for a • intuition:at least two non-intersecting paths converge to z, and one path must contain node strictly dominated by x

  25. Dominance Frontier Example S node y is in dominance frontier of node x if:x dominates predecessor of y but does not strictly dominate y X A B DF(X) = {Y|( 9 P 2 PRED(Y): X Dom P) Æq X Dom! Y)

  26. Dominance Frontier Example DF(v) = SUCC(Dom-1(v)) – Dom!-1(v)where Dom!-1(v) = Dom-1(v) – {v} A (Entry) Dom-1 SUCC(Dom-1) DF Dom-1 SUCC(Dom-1) DF B Dom-1 SUCC(Dom-1) DF Dom-1 SUCC(Dom-1) DF C D Dom-1 SUCC(Dom-1) DF E Dom-1 SUCC(Dom-1) DF Dom-1 SUCC(Dom-1) DF F G (Exit)

  27. Next Time • Computing dominance frontiers • Computing SSA form

More Related