@@ -315,14 +315,9 @@ FreezeInst *FreezeInst::create(Value *V, BBIterator WhereIt,
315315 return Ctx.createFreezeInst (LLVMI);
316316}
317317
318- FenceInst *FenceInst::create (AtomicOrdering Ordering, BBIterator WhereIt,
319- BasicBlock *WhereBB, Context &Ctx,
320- SyncScope::ID SSID) {
321- auto &Builder = Ctx.getLLVMIRBuilder ();
322- if (WhereIt != WhereBB->end ())
323- Builder.SetInsertPoint ((*WhereIt).getTopmostLLVMInstruction ());
324- else
325- Builder.SetInsertPoint (cast<llvm::BasicBlock>(WhereBB->Val ));
318+ FenceInst *FenceInst::create (AtomicOrdering Ordering, InsertPosition Pos,
319+ Context &Ctx, SyncScope::ID SSID) {
320+ auto &Builder = Instruction::setInsertPos (Pos);
326321 llvm::FenceInst *LLVMI = Builder.CreateFence (Ordering, SSID);
327322 return Ctx.createFenceInst (LLVMI);
328323}
@@ -342,9 +337,9 @@ void FenceInst::setSyncScopeID(SyncScope::ID SSID) {
342337 cast<llvm::FenceInst>(Val)->setSyncScopeID (SSID);
343338}
344339
345- Value *SelectInst::createCommon (Value *Cond, Value *True, Value *False,
346- const Twine &Name, IRBuilder<> &Builder,
347- Context &Ctx) {
340+ Value *SelectInst::create (Value *Cond, Value *True, Value *False,
341+ InsertPosition Pos, Context &Ctx, const Twine &Name) {
342+ auto &Builder = Instruction::setInsertPos (Pos);
348343 llvm::Value *NewV =
349344 Builder.CreateSelect (Cond->Val , True->Val , False->Val , Name);
350345 if (auto *NewSI = dyn_cast<llvm::SelectInst>(NewV))
@@ -353,24 +348,6 @@ Value *SelectInst::createCommon(Value *Cond, Value *True, Value *False,
353348 return Ctx.getOrCreateConstant (cast<llvm::Constant>(NewV));
354349}
355350
356- Value *SelectInst::create (Value *Cond, Value *True, Value *False,
357- Instruction *InsertBefore, Context &Ctx,
358- const Twine &Name) {
359- llvm::Instruction *BeforeIR = InsertBefore->getTopmostLLVMInstruction ();
360- auto &Builder = Ctx.getLLVMIRBuilder ();
361- Builder.SetInsertPoint (BeforeIR);
362- return createCommon (Cond, True, False, Name, Builder, Ctx);
363- }
364-
365- Value *SelectInst::create (Value *Cond, Value *True, Value *False,
366- BasicBlock *InsertAtEnd, Context &Ctx,
367- const Twine &Name) {
368- auto *IRInsertAtEnd = cast<llvm::BasicBlock>(InsertAtEnd->Val );
369- auto &Builder = Ctx.getLLVMIRBuilder ();
370- Builder.SetInsertPoint (IRInsertAtEnd);
371- return createCommon (Cond, True, False, Name, Builder, Ctx);
372- }
373-
374351void SelectInst::swapValues () {
375352 Ctx.getTracker ().emplaceIfTracking <UseSwap>(getOperandUse (1 ),
376353 getOperandUse (2 ));
@@ -1791,23 +1768,9 @@ void PossiblyNonNegInst::setNonNeg(bool B) {
17911768}
17921769
17931770Value *InsertElementInst::create (Value *Vec, Value *NewElt, Value *Idx,
1794- Instruction *InsertBefore , Context &Ctx,
1771+ InsertPosition Pos , Context &Ctx,
17951772 const Twine &Name) {
1796- auto &Builder = Ctx.getLLVMIRBuilder ();
1797- Builder.SetInsertPoint (InsertBefore->getTopmostLLVMInstruction ());
1798- llvm::Value *NewV =
1799- Builder.CreateInsertElement (Vec->Val , NewElt->Val , Idx->Val , Name);
1800- if (auto *NewInsert = dyn_cast<llvm::InsertElementInst>(NewV))
1801- return Ctx.createInsertElementInst (NewInsert);
1802- assert (isa<llvm::Constant>(NewV) && " Expected constant" );
1803- return Ctx.getOrCreateConstant (cast<llvm::Constant>(NewV));
1804- }
1805-
1806- Value *InsertElementInst::create (Value *Vec, Value *NewElt, Value *Idx,
1807- BasicBlock *InsertAtEnd, Context &Ctx,
1808- const Twine &Name) {
1809- auto &Builder = Ctx.getLLVMIRBuilder ();
1810- Builder.SetInsertPoint (cast<llvm::BasicBlock>(InsertAtEnd->Val ));
1773+ auto &Builder = Instruction::setInsertPos (Pos);
18111774 llvm::Value *NewV =
18121775 Builder.CreateInsertElement (Vec->Val , NewElt->Val , Idx->Val , Name);
18131776 if (auto *NewInsert = dyn_cast<llvm::InsertElementInst>(NewV))
0 commit comments