aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDevang Patel <dpatel@apple.com>2007-06-28 02:07:08 +0000
committerDevang Patel <dpatel@apple.com>2007-06-28 02:07:08 +0000
commitdc3a207e787f8ac8bc0c412f206b9f519c436e5e (patch)
treef9bc1c9c188ab2b45e152b9874723b2255085806
parenteb62eca5033f3b2f22a2d09362397660bf3b05f3 (diff)
Handle the case when block dominates itself.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37773 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r--include/llvm/Analysis/Dominators.h5
1 files changed, 4 insertions, 1 deletions
diff --git a/include/llvm/Analysis/Dominators.h b/include/llvm/Analysis/Dominators.h
index 9873759025..92d05dc7d5 100644
--- a/include/llvm/Analysis/Dominators.h
+++ b/include/llvm/Analysis/Dominators.h
@@ -185,7 +185,7 @@ protected:
const DomTreeNode *B) const {
const DomTreeNode *IDom;
if (A == 0 || B == 0) return false;
- while ((IDom = B->getIDom()) != 0 && IDom != A)
+ while ((IDom = B->getIDom()) != 0 && IDom != A && IDom != B)
B = IDom; // Walk up the tree
return IDom != 0;
}
@@ -244,6 +244,9 @@ protected:
DomTreeNode *addNewBlock(BasicBlock *BB, BasicBlock *DomBB) {
assert(getNode(BB) == 0 && "Block already in dominator tree!");
DomTreeNode *IDomNode = getNode(DomBB);
+ // Check if BB dominates itself.
+ //if (!IDomNode && BB == DomBB)
+ // IDomNode = BB;
assert(IDomNode && "Not immediate dominator specified for block!");
DFSInfoValid = false;
return DomTreeNodes[BB] =