Insert new pre-header before new header. Original pre-header may
authorDevang Patel <dpatel@apple.com>
Mon, 9 Apr 2007 21:40:43 +0000 (21:40 +0000)
committerDevang Patel <dpatel@apple.com>
Mon, 9 Apr 2007 21:40:43 +0000 (21:40 +0000)
happen to be an entry, in such case, it is not a good idea to
insert new block before entry.

Also fix typo in assertion check.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35833 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Transforms/Scalar/LoopRotation.cpp

index c372a4a6c87a42ecbc89c6db9ef17a298d3707e3..eebc69c53ff93a6d989f32eda31b1c626b05c6c2 100644 (file)
@@ -429,7 +429,7 @@ void LoopRotate::preserveCanonicalLoopForm(LPPassManager &LPM) {
   // exit block. Insert new block between original pre-header and
   // new header such that loop's new pre-header has only one successor.
   BasicBlock *NewPreHeader = new BasicBlock("bb.nph", OrigHeader->getParent(), 
-                                OrigPreHeader);
+                                NewHeader);
   LoopInfo &LI = LPM.getAnalysis<LoopInfo>();
   if (Loop *PL = LI.getLoopFor(OrigPreHeader))
     PL->addBasicBlockToLoop(NewPreHeader, LI);
@@ -439,7 +439,7 @@ void LoopRotate::preserveCanonicalLoopForm(LPPassManager &LPM) {
   if (OrigPH_BI->getSuccessor(0) == NewHeader)
     OrigPH_BI->setSuccessor(0, NewPreHeader);
   else {
-    assert (OrigPH_BI->getSuccessor(1) == NewPreHeader &&
+    assert (OrigPH_BI->getSuccessor(1) == NewHeader &&
             "Unexpected original pre-header terminator");
     OrigPH_BI->setSuccessor(1, NewPreHeader);
   }