diff options
Diffstat (limited to 'lib/Transforms/Utils/LoopUnroll.cpp')
| -rw-r--r-- | lib/Transforms/Utils/LoopUnroll.cpp | 11 | 
1 files changed, 7 insertions, 4 deletions
diff --git a/lib/Transforms/Utils/LoopUnroll.cpp b/lib/Transforms/Utils/LoopUnroll.cpp index f9a602bc268a..e346ebd6a000 100644 --- a/lib/Transforms/Utils/LoopUnroll.cpp +++ b/lib/Transforms/Utils/LoopUnroll.cpp @@ -189,11 +189,14 @@ const Loop* llvm::addClonedBlockToLoopInfo(BasicBlock *OriginalBB,      assert(OriginalBB == OldLoop->getHeader() &&             "Header should be first in RPO"); +    NewLoop = new Loop();      Loop *NewLoopParent = NewLoops.lookup(OldLoop->getParentLoop()); -    assert(NewLoopParent && -           "Expected parent loop before sub-loop in RPO"); -    NewLoop = new Loop; -    NewLoopParent->addChildLoop(NewLoop); + +    if (NewLoopParent) +      NewLoopParent->addChildLoop(NewLoop); +    else +      LI->addTopLevelLoop(NewLoop); +      NewLoop->addBasicBlockToLoop(ClonedBB, *LI);      return OldLoop;    } else {  | 
