History
Dominance was first introduced by Reese T. Prosser in a 1959 paper on analysis of flow diagrams. Prosser did not present an algorithm for computing dominance, which had to wait ten years for Edward S. Lowry and C. W. Medlock. Ron Cytron ''et al.'' rekindled interest in dominance in 1989 when they applied it to the problem of efficiently computing the placement of φ functions, which are used in static single assignment form.Applications
Dominators, and dominance frontiers particularly, have applications in compilers for computing static single assignment form. A number of compiler optimizations can also benefit from dominators. The flow graph in this case comprises basic blocks. Automatic parallelization benefits from postdominance frontiers. This is an efficient method of computing control dependence, which is critical to the analysis. Memory usage analysis can benefit from the dominator tree to easily find leaks and identify high memory usage. In hardware systems, dominators are used for computing signal probabilities for test generation, estimating switching activities for power and noise analysis, and selecting cut points in equivalence checking. In software systems, they are used for reducing the size of the test set in structural testing techniques such as statement and branch coverage.Algorithms
Let be the source node on the Control-flow graph. The dominators of a node are given by the maximal solution to the following data-flow equations: : The dominator of the start node is the start node itself. The set of dominators for any other node is the intersection of the set of dominators for all predecessors of . The node is also in the set of dominators for . An algorithm for the direct solution is: // dominator of the start node is the start itself Dom(n0) = // for all other nodes, set all nodes as the dominators for each n in N - Dom(n) = N; // iteratively eliminate nodes that are not dominators while changes in any Dom(n) for each n in N - : Dom(n) = union with intersection over Dom(p) for all p in pred(n) The direct solution isPostdominance
Analogous to the definition of dominance above, a node ''z'' is said to post-dominate a node ''n'' if all paths to the exit node of the graph starting at ''n'' must go through ''z''. Similarly, the immediate post-dominator of a node ''n'' is the postdominator of ''n'' that doesn't strictly postdominate any other strict postdominators of ''n''.See also
* Control-flow graph * Interval (graph theory) * Static single assignment formReferences
External links