diff --git a/clang/lib/CodeGen/CGCleanup.cpp b/clang/lib/CodeGen/CGCleanup.cpp --- a/clang/lib/CodeGen/CGCleanup.cpp +++ b/clang/lib/CodeGen/CGCleanup.cpp @@ -556,7 +556,7 @@ Entry->replaceAllUsesWith(Pred); // Merge the blocks. - Pred->getInstList().splice(Pred->end(), Entry->getInstList()); + Pred->splice(Pred->end(), Entry); // Kill the entry block. Entry->eraseFromParent(); diff --git a/llvm/lib/Frontend/OpenMP/OMPIRBuilder.cpp b/llvm/lib/Frontend/OpenMP/OMPIRBuilder.cpp --- a/llvm/lib/Frontend/OpenMP/OMPIRBuilder.cpp +++ b/llvm/lib/Frontend/OpenMP/OMPIRBuilder.cpp @@ -261,8 +261,7 @@ // Move instructions to new block. BasicBlock *Old = IP.getBlock(); - New->getInstList().splice(New->begin(), Old->getInstList(), IP.getPoint(), - Old->end()); + New->splice(New->begin(), Old, IP.getPoint(), Old->end()); if (CreateBranch) BranchInst::Create(New, Old); diff --git a/llvm/lib/IR/Instruction.cpp b/llvm/lib/IR/Instruction.cpp --- a/llvm/lib/IR/Instruction.cpp +++ b/llvm/lib/IR/Instruction.cpp @@ -115,7 +115,7 @@ void Instruction::moveBefore(BasicBlock &BB, SymbolTableList::iterator I) { assert(I == BB.end() || I->getParent() == &BB); - BB.getInstList().splice(I, getParent()->getInstList(), getIterator()); + BB.splice(I, getParent(), getIterator()); } bool Instruction::comesBefore(const Instruction *Other) const { diff --git a/llvm/lib/Transforms/Coroutines/CoroSplit.cpp b/llvm/lib/Transforms/Coroutines/CoroSplit.cpp --- a/llvm/lib/Transforms/Coroutines/CoroSplit.cpp +++ b/llvm/lib/Transforms/Coroutines/CoroSplit.cpp @@ -201,8 +201,8 @@ assert(MustTailCallFuncBlock && "Must have a single predecessor block"); auto It = MustTailCallFuncBlock->getTerminator()->getIterator(); auto *MustTailCall = cast(&*std::prev(It)); - CoroEndBlock->getInstList().splice( - End->getIterator(), MustTailCallFuncBlock->getInstList(), MustTailCall); + CoroEndBlock->splice(End->getIterator(), MustTailCallFuncBlock, + MustTailCall->getIterator()); // Insert the return instruction. Builder.SetInsertPoint(End); diff --git a/llvm/lib/Transforms/Scalar/LoopInterchange.cpp b/llvm/lib/Transforms/Scalar/LoopInterchange.cpp --- a/llvm/lib/Transforms/Scalar/LoopInterchange.cpp +++ b/llvm/lib/Transforms/Scalar/LoopInterchange.cpp @@ -1350,11 +1350,10 @@ /// \brief Move all instructions except the terminator from FromBB right before /// InsertBefore static void moveBBContents(BasicBlock *FromBB, Instruction *InsertBefore) { - auto &ToList = InsertBefore->getParent()->getInstList(); - auto &FromList = FromBB->getInstList(); + BasicBlock *ToBB = InsertBefore->getParent(); - ToList.splice(InsertBefore->getIterator(), FromList, FromList.begin(), - FromBB->getTerminator()->getIterator()); + ToBB->splice(InsertBefore->getIterator(), FromBB, FromBB->begin(), + FromBB->getTerminator()->getIterator()); } /// Swap instructions between \p BB1 and \p BB2 but keep terminators intact. diff --git a/llvm/lib/Transforms/Scalar/SimpleLoopUnswitch.cpp b/llvm/lib/Transforms/Scalar/SimpleLoopUnswitch.cpp --- a/llvm/lib/Transforms/Scalar/SimpleLoopUnswitch.cpp +++ b/llvm/lib/Transforms/Scalar/SimpleLoopUnswitch.cpp @@ -579,8 +579,7 @@ // If fully unswitching, we can use the existing branch instruction. // Splice it into the old PH to gate reaching the new preheader and re-point // its successors. - OldPH->getInstList().splice(OldPH->end(), BI.getParent()->getInstList(), - BI); + OldPH->splice(OldPH->end(), BI.getParent(), BI.getIterator()); BI.setCondition(Cond); if (MSSAU) { // Temporarily clone the terminator, to make MSSA update cheaper by @@ -2251,7 +2250,7 @@ if (FullUnswitch) { // Splice the terminator from the original loop and rewrite its // successors. - SplitBB->getInstList().splice(SplitBB->end(), ParentBB->getInstList(), TI); + SplitBB->splice(SplitBB->end(), ParentBB, TI.getIterator()); // Keep a clone of the terminator for MSSA updates. Instruction *NewTI = TI.clone(); diff --git a/llvm/lib/Transforms/Utils/BasicBlockUtils.cpp b/llvm/lib/Transforms/Utils/BasicBlockUtils.cpp --- a/llvm/lib/Transforms/Utils/BasicBlockUtils.cpp +++ b/llvm/lib/Transforms/Utils/BasicBlockUtils.cpp @@ -267,8 +267,7 @@ Start = PTI; // Move all definitions in the successor to the predecessor... - PredBB->getInstList().splice(PTI->getIterator(), BB->getInstList(), - BB->begin(), STI->getIterator()); + PredBB->splice(PTI->getIterator(), BB, BB->begin(), STI->getIterator()); if (MSSAU) MSSAU->moveAllAfterMergeBlocks(BB, PredBB, Start); @@ -288,7 +287,7 @@ PredBB->back().eraseFromParent(); // Move terminator instruction. - PredBB->getInstList().splice(PredBB->end(), BB->getInstList()); + PredBB->splice(PredBB->end(), BB); // Terminator may be a memory accessing instruction too. if (MSSAU) diff --git a/llvm/lib/Transforms/Utils/CloneFunction.cpp b/llvm/lib/Transforms/Utils/CloneFunction.cpp --- a/llvm/lib/Transforms/Utils/CloneFunction.cpp +++ b/llvm/lib/Transforms/Utils/CloneFunction.cpp @@ -889,7 +889,7 @@ Dest->replaceAllUsesWith(&*I); // Move all the instructions in the succ to the pred. - I->getInstList().splice(I->end(), Dest->getInstList()); + I->splice(I->end(), Dest); // Remove the dest block. Dest->eraseFromParent(); diff --git a/llvm/lib/Transforms/Utils/FlattenCFG.cpp b/llvm/lib/Transforms/Utils/FlattenCFG.cpp --- a/llvm/lib/Transforms/Utils/FlattenCFG.cpp +++ b/llvm/lib/Transforms/Utils/FlattenCFG.cpp @@ -285,8 +285,7 @@ CB = PBI->getSuccessor(1 - Idx); // Delete the conditional branch. FirstCondBlock->back().eraseFromParent(); - FirstCondBlock->getInstList() - .splice(FirstCondBlock->end(), CB->getInstList()); + FirstCondBlock->splice(FirstCondBlock->end(), CB); PBI = cast(FirstCondBlock->getTerminator()); Value *CC = PBI->getCondition(); // Merge conditions. @@ -481,8 +480,7 @@ // Merge \param SecondEntryBlock into \param FirstEntryBlock. FirstEntryBlock->back().eraseFromParent(); - FirstEntryBlock->getInstList() - .splice(FirstEntryBlock->end(), SecondEntryBlock->getInstList()); + FirstEntryBlock->splice(FirstEntryBlock->end(), SecondEntryBlock); BranchInst *PBI = cast(FirstEntryBlock->getTerminator()); assert(PBI->getCondition() == CInst2); BasicBlock *SaveInsertBB = Builder.GetInsertBlock(); diff --git a/llvm/lib/Transforms/Utils/InlineFunction.cpp b/llvm/lib/Transforms/Utils/InlineFunction.cpp --- a/llvm/lib/Transforms/Utils/InlineFunction.cpp +++ b/llvm/lib/Transforms/Utils/InlineFunction.cpp @@ -2411,8 +2411,8 @@ // Transfer all of the allocas over in a block. Using splice means // that the instructions aren't removed from the symbol table, then // reinserted. - Caller->getEntryBlock().getInstList().splice( - InsertPoint, FirstNewBlock->getInstList(), AI->getIterator(), I); + Caller->getEntryBlock().splice(InsertPoint, &*FirstNewBlock, + AI->getIterator(), I); } } @@ -2755,8 +2755,8 @@ // the calling basic block. if (Returns.size() == 1 && std::distance(FirstNewBlock, Caller->end()) == 1) { // Move all of the instructions right before the call. - OrigBB->getInstList().splice(CB.getIterator(), FirstNewBlock->getInstList(), - FirstNewBlock->begin(), FirstNewBlock->end()); + OrigBB->splice(CB.getIterator(), &*FirstNewBlock, FirstNewBlock->begin(), + FirstNewBlock->end()); // Remove the cloned basic block. Caller->getBasicBlockList().pop_back(); @@ -2896,8 +2896,7 @@ // Splice the code from the return block into the block that it will return // to, which contains the code that was after the call. - AfterCallBB->getInstList().splice(AfterCallBB->begin(), - ReturnBB->getInstList()); + AfterCallBB->splice(AfterCallBB->begin(), ReturnBB); if (CreatedBranchToNormalDest) CreatedBranchToNormalDest->setDebugLoc(Returns[0]->getDebugLoc()); @@ -2927,7 +2926,7 @@ // Splice the code entry block into calling block, right before the // unconditional branch. CalleeEntry->replaceAllUsesWith(OrigBB); // Update PHI nodes - OrigBB->getInstList().splice(Br->getIterator(), CalleeEntry->getInstList()); + OrigBB->splice(Br->getIterator(), CalleeEntry); // Remove the unconditional branch. Br->eraseFromParent(); diff --git a/llvm/lib/Transforms/Utils/Local.cpp b/llvm/lib/Transforms/Utils/Local.cpp --- a/llvm/lib/Transforms/Utils/Local.cpp +++ b/llvm/lib/Transforms/Utils/Local.cpp @@ -799,7 +799,7 @@ // Splice all the instructions from PredBB to DestBB. PredBB->getTerminator()->eraseFromParent(); - DestBB->getInstList().splice(DestBB->begin(), PredBB->getInstList()); + DestBB->splice(DestBB->begin(), PredBB); new UnreachableInst(PredBB->getContext(), PredBB); // If the PredBB is the entry block of the function, move DestBB up to @@ -1204,8 +1204,7 @@ // Copy over any phi, debug or lifetime instruction. BB->getTerminator()->eraseFromParent(); - Succ->getInstList().splice(Succ->getFirstNonPHI()->getIterator(), - BB->getInstList()); + Succ->splice(Succ->getFirstNonPHI()->getIterator(), BB); } else { while (PHINode *PN = dyn_cast(&BB->front())) { // We explicitly check for such uses in CanPropagatePredecessorsForPHIs. @@ -2962,9 +2961,8 @@ I->setDebugLoc(InsertPt->getDebugLoc()); ++II; } - DomBlock->getInstList().splice(InsertPt->getIterator(), BB->getInstList(), - BB->begin(), - BB->getTerminator()->getIterator()); + DomBlock->splice(InsertPt->getIterator(), BB, BB->begin(), + BB->getTerminator()->getIterator()); } namespace { diff --git a/llvm/lib/Transforms/Utils/SimplifyCFG.cpp b/llvm/lib/Transforms/Utils/SimplifyCFG.cpp --- a/llvm/lib/Transforms/Utils/SimplifyCFG.cpp +++ b/llvm/lib/Transforms/Utils/SimplifyCFG.cpp @@ -1603,16 +1603,13 @@ // The debug location is an integral part of a debug info intrinsic // and can't be separated from it or replaced. Instead of attempting // to merge locations, simply hoist both copies of the intrinsic. - BIParent->getInstList().splice(BI->getIterator(), BB1->getInstList(), - I1); - BIParent->getInstList().splice(BI->getIterator(), BB2->getInstList(), - I2); + BIParent->splice(BI->getIterator(), BB1, I1->getIterator()); + BIParent->splice(BI->getIterator(), BB2, I2->getIterator()); } else { // For a normal instruction, we just move one to right before the // branch, then replace all uses of the other with the first. Finally, // we remove the now redundant second instruction. - BIParent->getInstList().splice(BI->getIterator(), BB1->getInstList(), - I1); + BIParent->splice(BI->getIterator(), BB1, I1->getIterator()); if (!I2->use_empty()) I2->replaceAllUsesWith(I1); I1->andIRFlags(I2); @@ -3040,8 +3037,8 @@ } // Hoist the instructions. - BB->getInstList().splice(BI->getIterator(), ThenBB->getInstList(), - ThenBB->begin(), std::prev(ThenBB->end())); + BB->splice(BI->getIterator(), ThenBB, ThenBB->begin(), + std::prev(ThenBB->end())); // Insert selects and rewrite the PHI operands. IRBuilder Builder(BI);