'Construct a dominance frontier based on the given post-dominator tree.
This implementation is based on figure 2 of paper An Efficient Method of Computing Static Single Assignment
Form by Ron Cytron, etc.
:param postdom: The post-dominator tree
:returns:        A dict of dominance frontier'

def _df_construct(self, postdom):

    DF = {}
    for x in networkx.dfs_postorder_nodes(postdom):
        DF[x] = set()
        for y in self._normalized_cfg.successors_iter(x):
            if (x not in postdom.predecessors(y)):
                DF[x].add(y)
        if (x is None):
            continue
        for z in postdom.successors(x):
            if (z is x):
                continue
            if (z not in DF):
                continue
            for y in DF[z]:
                if (x not in postdom.predecessors(y)):
                    DF[x].add(y)
    return DF
