From: Chris Lattner Date: Fri, 4 Oct 2002 14:50:20 +0000 (+0000) Subject: Handle post dominance correctly in the case where blocks do not have a path to X-Git-Url: http://plrg.eecs.uci.edu/git/?a=commitdiff_plain;h=7d821db9586dfcd8301957c768c68c58b1ead34a;p=oota-llvm.git Handle post dominance correctly in the case where blocks do not have a path to the exit node. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4038 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/Analysis/PostDominators.cpp b/lib/Analysis/PostDominators.cpp index 8b66ff6cad1..f027949793f 100644 --- a/lib/Analysis/PostDominators.cpp +++ b/lib/Analysis/PostDominators.cpp @@ -59,6 +59,18 @@ bool PostDominatorSet::runOnFunction(Function &F) { if (PredSet.size()) set_intersect(WorkingSet, PredSet); } + } else if (BB != Root) { + // If this isn't the root basic block and it has no successors, it must + // be an non-returning block. Fib a bit by saying that the root node + // postdominates this unreachable node. This isn't exactly true, + // because there is no path from this node to the root node, but it is + // sorta true because any paths to the exit node would have to go + // through this node. + // + // This allows for postdominator properties to be built for code that + // doesn't return in a reasonable manner. + // + WorkingSet = Doms[Root]; } WorkingSet.insert(BB); // A block always dominates itself