Utils/LoopUnroll.cpp: Tweak (StringRef)OldName to be valid until it is used, since...
authorNAKAMURA Takumi <geek4civic@gmail.com>
Sun, 17 Nov 2013 18:05:34 +0000 (18:05 +0000)
committerNAKAMURA Takumi <geek4civic@gmail.com>
Sun, 17 Nov 2013 18:05:34 +0000 (18:05 +0000)
eraseFromParent() invalidates OldName.

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

lib/Transforms/Utils/LoopUnroll.cpp

index 9955bfd6264ef5d73d6245aba9900781097ea1b0..162807d03c624a6dfeb1949ca738acbb1be5f5bb 100644 (file)
@@ -90,6 +90,7 @@ static BasicBlock *FoldBlockIntoPredecessor(BasicBlock *BB, LoopInfo* LI,
   // Move all definitions in the successor to the predecessor...
   OnlyPred->getInstList().splice(OnlyPred->end(), BB->getInstList());
 
+  // OldName will be valid until erased.
   StringRef OldName = BB->getName();
 
   // Erase basic block from the function...
@@ -102,12 +103,13 @@ static BasicBlock *FoldBlockIntoPredecessor(BasicBlock *BB, LoopInfo* LI,
     }
   }
   LI->removeBlock(BB);
-  BB->eraseFromParent();
 
   // Inherit predecessor's name if it exists...
   if (!OldName.empty() && !OnlyPred->hasName())
     OnlyPred->setName(OldName);
 
+  BB->eraseFromParent();
+
   return OnlyPred;
 }