@@ -315,14 +315,9 @@ FreezeInst *FreezeInst::create(Value *V, BBIterator WhereIt,
315
315
return Ctx.createFreezeInst (LLVMI);
316
316
}
317
317
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);
326
321
llvm::FenceInst *LLVMI = Builder.CreateFence (Ordering, SSID);
327
322
return Ctx.createFenceInst (LLVMI);
328
323
}
@@ -342,9 +337,9 @@ void FenceInst::setSyncScopeID(SyncScope::ID SSID) {
342
337
cast<llvm::FenceInst>(Val)->setSyncScopeID (SSID);
343
338
}
344
339
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);
348
343
llvm::Value *NewV =
349
344
Builder.CreateSelect (Cond->Val , True->Val , False->Val , Name);
350
345
if (auto *NewSI = dyn_cast<llvm::SelectInst>(NewV))
@@ -353,24 +348,6 @@ Value *SelectInst::createCommon(Value *Cond, Value *True, Value *False,
353
348
return Ctx.getOrCreateConstant (cast<llvm::Constant>(NewV));
354
349
}
355
350
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
-
374
351
void SelectInst::swapValues () {
375
352
Ctx.getTracker ().emplaceIfTracking <UseSwap>(getOperandUse (1 ),
376
353
getOperandUse (2 ));
@@ -1791,23 +1768,9 @@ void PossiblyNonNegInst::setNonNeg(bool B) {
1791
1768
}
1792
1769
1793
1770
Value *InsertElementInst::create (Value *Vec, Value *NewElt, Value *Idx,
1794
- Instruction *InsertBefore , Context &Ctx,
1771
+ InsertPosition Pos , Context &Ctx,
1795
1772
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);
1811
1774
llvm::Value *NewV =
1812
1775
Builder.CreateInsertElement (Vec->Val , NewElt->Val , Idx->Val , Name);
1813
1776
if (auto *NewInsert = dyn_cast<llvm::InsertElementInst>(NewV))
0 commit comments