summary | shortlog | log | commit | commitdiff | tree
raw | patch | inline | side by side (parent: ee1d7db)
raw | patch | inline | side by side (parent: ee1d7db)
author | Alexey Samsonov <samsonov@google.com> | |
Fri, 2 Aug 2013 08:06:43 +0000 (08:06 +0000) | ||
committer | Alexey Samsonov <samsonov@google.com> | |
Fri, 2 Aug 2013 08:06:43 +0000 (08:06 +0000) |
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@187646 91177308-0d34-0410-b5e6-96231b3b80d8
lib/Transforms/Utils/SimplifyCFG.cpp | patch | blob | history |
index 427688fc8e1bfa8f9a85466ff815f0d1c795b52e..d48213ff6e302a16a93bd7ad7740cc5af9aedb92 100644 (file)
@@ -4290,7 +4290,8 @@ bool SimplifyCFGOpt::SimplifyParallelAndOr(BasicBlock *BB, IRBuilder<> &Builder,
// Do the transformation.
BasicBlock *CB;
bool Iteration = true;
- BasicBlock::iterator ItOld = Builder.GetInsertPoint();
+ BasicBlock *SaveInsertBB = Builder.GetInsertBlock();
+ BasicBlock::iterator SaveInsertPt = Builder.GetInsertPoint();
BranchInst *PBI = dyn_cast<BranchInst>(FirstCondBlock->getTerminator());
Value *PC = PBI->getCondition();
do {
@@ -4319,8 +4320,8 @@ bool SimplifyCFGOpt::SimplifyParallelAndOr(BasicBlock *BB, IRBuilder<> &Builder,
// make CB unreachable and let downstream to delete the block.
new UnreachableInst(CB->getContext(), CB);
} while (Iteration);
-
- Builder.SetInsertPoint(ItOld);
+ if (SaveInsertBB)
+ Builder.SetInsertPoint(SaveInsertBB, SaveInsertPt);
DEBUG(dbgs() << "Use parallel and/or in:\n" << *FirstCondBlock);
return true;
}
FirstEntryBlock->getInstList().splice(FirstEntryBlock->end(), SecondEntryBlock->getInstList());
BranchInst *PBI = dyn_cast<BranchInst>(FirstEntryBlock->getTerminator());
Value *CC = PBI->getCondition();
- BasicBlock::iterator ItOld = Builder.GetInsertPoint();
+ BasicBlock *SaveInsertBB = Builder.GetInsertBlock();
+ BasicBlock::iterator SaveInsertPt = Builder.GetInsertPoint();
Builder.SetInsertPoint(PBI);
Value *NC = Builder.CreateOr(CInst1, CC);
PBI->replaceUsesOfWith(CC, NC);
- Builder.SetInsertPoint(ItOld);
+ if (SaveInsertBB)
+ Builder.SetInsertPoint(SaveInsertBB, SaveInsertPt);
// Remove IfTrue1
if (IfTrue1 != FirstEntryBlock) {