Revert "[LoopUnroll] Properly update loop-info when cloning prologues and epilogues."

This reverts commit r280901.

This caused a bunch of failures, reverting it until I investigate them.

llvm-svn: 280905
diff --git a/llvm/lib/Transforms/Utils/LoopUnrollRuntime.cpp b/llvm/lib/Transforms/Utils/LoopUnrollRuntime.cpp
index ee8bd35..5758a41 100644
--- a/llvm/lib/Transforms/Utils/LoopUnrollRuntime.cpp
+++ b/llvm/lib/Transforms/Utils/LoopUnrollRuntime.cpp
@@ -291,10 +291,15 @@
   Function *F = Header->getParent();
   LoopBlocksDFS::RPOIterator BlockBegin = LoopBlocks.beginRPO();
   LoopBlocksDFS::RPOIterator BlockEnd = LoopBlocks.endRPO();
+  Loop *NewLoop = nullptr;
   Loop *ParentLoop = L->getParentLoop();
-
-  // The map from original loops to their cloned copies.
-  SmallDenseMap<const Loop *, Loop *, 4> NewLoops;
+  if (CreateRemainderLoop) {
+    NewLoop = new Loop();
+    if (ParentLoop)
+      ParentLoop->addChildLoop(NewLoop);
+    else
+      LI->addTopLevelLoop(NewLoop);
+  }
 
   // For each block in the original loop, create a new copy,
   // and update the value map with the newly created values.
@@ -302,57 +307,10 @@
     BasicBlock *NewBB = CloneBasicBlock(*BB, VMap, "." + suffix, F);
     NewBlocks.push_back(NewBB);
 
-    // Figure out which loop NewBB is in.
-    auto findClonedLoop = [&](const Loop *OldLoop) {
-      Loop *&NewLoop = NewLoops[OldLoop];
-      // If we've encountered this loop before, return it right away.
-      if (NewLoop)
-        return NewLoop;
-
-      // If BB is from L, and we're not creating a remainder, the loop for
-      // NewBB will be ParentLoop, which might be null. Update NewLoops map and
-      // return ParentLoop.
-      if (OldLoop == L && !CreateRemainderLoop)
-        return (NewLoop = ParentLoop);
-
-      // Now we know that there should be a cloned counterpart for OldLoop, but
-      // we haven't seen it yet. Note that OldLoop might be L if we're
-      // generating a remainder loop, or it can be an inner loop of L - in this
-      // case we'll recreate the loop structure of L in its clone.
-
-      // This is a first block belonging to OldLoop encountered in our RPO
-      // traversal.
-      assert(*BB == OldLoop->getHeader() && "Header should be first in RPO");
-
-      NewLoop = new Loop;
-      Loop *OldLoopParent = OldLoop->getParentLoop();
-      // If OldLoop has a parent loop, we have two options:
-      //   1. ParentLoop is the parent of L. It won't be cloned, and it will
-      //      be a parent for NewLoop too.
-      //   2. ParentLoop is not a parent of L. In this case, it should be one
-      //      of the cloned loops and we should be able to find it in our map.
-      //
-      // If OldLoop doesn't have a parent, then NewLoop should be yet another
-      // top-level loop.
-      if (OldLoopParent) {
-        Loop *NewLoopParent = ParentLoop == OldLoopParent
-                                  ? ParentLoop
-                                  : NewLoops.lookup(OldLoopParent);
-        assert(NewLoopParent && "Expected parent loop before sub-loop in RPO");
-        NewLoopParent->addChildLoop(NewLoop);
-      } else
-        LI->addTopLevelLoop(NewLoop);
-      return NewLoop;
-    };
-
-    Loop *NewLoop = findClonedLoop(LI->getLoopFor(*BB));
-
-    assert(NewLoop ||
-           (!CreateRemainderLoop && !ParentLoop) &&
-               "NewLoop can only be null if we are cloning top-level loop "
-               "without creating a remainder loop.");
     if (NewLoop)
       NewLoop->addBasicBlockToLoop(NewBB, *LI);
+    else if (ParentLoop)
+      ParentLoop->addBasicBlockToLoop(NewBB, *LI);
 
     VMap[*BB] = NewBB;
     if (Header == *BB) {
@@ -411,8 +369,7 @@
         NewPHI->setIncomingValue(idx, V);
     }
   }
-  if (CreateRemainderLoop) {
-    Loop *NewLoop = NewLoops[L];
+  if (NewLoop) {
     // Add unroll disable metadata to disable future unrolling for this loop.
     SmallVector<Metadata *, 4> MDs;
     // Reserve first location for self reference to the LoopID metadata node.