Class CytronDominanceFrontier<N>

    • Constructor Detail

      • CytronDominanceFrontier

        public CytronDominanceFrontier​(DominatorTree<N> dt)
    • Method Detail

      • isFrontierKnown

        protected boolean isFrontierKnown​(DominatorNode<N> node)
      • bottomUpDispatch

        protected void bottomUpDispatch​(DominatorNode<N> node)
        Make sure we visit children first. This is reverse topological order.
      • processNode

        protected void processNode​(DominatorNode<N> node)
        Calculate dominance frontier for a set of basic blocks.

        Uses the algorithm of Cytron et al., TOPLAS Oct. 91:

         
         for each X in a bottom-up traversal of the dominator tree do
        
              DF(X) < - null
              for each Y in Succ(X) do
                if (idom(Y)!=X) then DF(X) <- DF(X) U Y
              end
              for each Z in {idom(z) = X} do
                for each Y in DF(Z) do
                      if (idom(Y)!=X) then DF(X) <- DF(X) U Y
                end
              end