Handle the case when block dominates itself.
authorDevang Patel <dpatel@apple.com>
Thu, 28 Jun 2007 02:07:08 +0000 (02:07 +0000)
committerDevang Patel <dpatel@apple.com>
Thu, 28 Jun 2007 02:07:08 +0000 (02:07 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37773 91177308-0d34-0410-b5e6-96231b3b80d8

include/llvm/Analysis/Dominators.h

index 9873759025c757a8a4c6577a329023df4a7cdc72..92d05dc7d588db1bcc460cf87aad34ca521b95c5 100644 (file)
@@ -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] =