From: Devang Patel Date: Tue, 12 Jun 2007 17:17:57 +0000 (+0000) Subject: Check A dominates B and vise versa first while searching for nearest X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=5fd306bf0d75b8dde7e2ff5e42e15e96d5cdfcfe;p=oota-llvm.git Check A dominates B and vise versa first while searching for nearest common dominator. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37559 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/VMCore/Dominators.cpp b/lib/VMCore/Dominators.cpp index 4d125fb0223..35b2bbfc224 100644 --- a/lib/VMCore/Dominators.cpp +++ b/lib/VMCore/Dominators.cpp @@ -387,12 +387,12 @@ BasicBlock *DominatorTreeBase::findNearestCommonDominator(BasicBlock *A, DomTreeNode *NodeB = getNode(B); - // If B immediately dominates A then B is nearest common dominator. - if (NodeA->getIDom() == NodeB) + // If B dominates A then B is nearest common dominator. + if (dominates(B,A)) return B; - // If A immediately dominates B then A is nearest common dominator. - if (NodeB->getIDom() == NodeA) + // If A dominates B then A is nearest common dominator. + if (dominates(A,B)) return A; // Collect NodeA dominators set. @@ -404,10 +404,6 @@ BasicBlock *DominatorTreeBase::findNearestCommonDominator(BasicBlock *A, IDomA = IDomA->getIDom(); } - // If B dominates A then B is nearest common dominator. - if (NodeADoms.count(NodeB) != 0) - return B; - // Walk NodeB immediate dominators chain and find common dominator node. DomTreeNode *IDomB = NodeB->getIDom(); while(IDomB) {