Fix the requisite bug that I introduced


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5605 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/Analysis/LoopInfo.cpp b/lib/Analysis/LoopInfo.cpp
index ef4b643..70bf97c 100644
--- a/lib/Analysis/LoopInfo.cpp
+++ b/lib/Analysis/LoopInfo.cpp
@@ -155,17 +155,19 @@
           // now by moving the loop into the correct subloop.
           //
           Loop *SubLoop = BBMI->second;
-          Loop *OldSubLoopParent = SubLoop->getParentLoop();
-          if (OldSubLoopParent != L) {
-            // Remove SubLoop from OldSubLoopParent's list of subloops...
-            std::vector<Loop*>::iterator I =
-              std::find(OldSubLoopParent->SubLoops.begin(),
-                        OldSubLoopParent->SubLoops.end(), SubLoop);
-            assert(I != OldSubLoopParent->SubLoops.end()
-                   && "Loop parent doesn't contain loop?");
-            OldSubLoopParent->SubLoops.erase(I);
-            SubLoop->ParentLoop = L;
-            L->SubLoops.push_back(SubLoop);
+          if (SubLoop->getHeader() == *I) { // Only do this once for the loop...
+            Loop *OldSubLoopParent = SubLoop->getParentLoop();
+            if (OldSubLoopParent != L) {
+              // Remove SubLoop from OldSubLoopParent's list of subloops...
+              std::vector<Loop*>::iterator I =
+                std::find(OldSubLoopParent->SubLoops.begin(),
+                          OldSubLoopParent->SubLoops.end(), SubLoop);
+              assert(I != OldSubLoopParent->SubLoops.end()
+                     && "Loop parent doesn't contain loop?");
+              OldSubLoopParent->SubLoops.erase(I);
+              SubLoop->ParentLoop = L;
+              L->SubLoops.push_back(SubLoop);
+            }
           }
         }
       }