Skip to content

Commit 3a47bf6

Browse files
authored
[SandboxIR] Switch more Instruction::create() to InsertPosition (#111080)
1 parent 98a15c7 commit 3a47bf6

File tree

3 files changed

+54
-187
lines changed

3 files changed

+54
-187
lines changed

llvm/include/llvm/SandboxIR/Instruction.h

Lines changed: 11 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -1259,8 +1259,7 @@ class UnreachableInst final : public Instruction {
12591259
}
12601260

12611261
public:
1262-
static UnreachableInst *create(Instruction *InsertBefore, Context &Ctx);
1263-
static UnreachableInst *create(BasicBlock *InsertAtEnd, Context &Ctx);
1262+
static UnreachableInst *create(InsertPosition Pos, Context &Ctx);
12641263
static bool classof(const Value *From);
12651264
unsigned getNumSuccessors() const { return 0; }
12661265
unsigned getUseOperandNo(const Use &Use) const final {
@@ -1280,10 +1279,7 @@ class ReturnInst final : public SingleLLVMInstructionImpl<llvm::ReturnInst> {
12801279
Context &Ctx);
12811280

12821281
public:
1283-
static ReturnInst *create(Value *RetVal, Instruction *InsertBefore,
1284-
Context &Ctx);
1285-
static ReturnInst *create(Value *RetVal, BasicBlock *InsertAtEnd,
1286-
Context &Ctx);
1282+
static ReturnInst *create(Value *RetVal, InsertPosition Pos, Context &Ctx);
12871283
static bool classof(const Value *From) {
12881284
return From->getSubclassID() == ClassID::Ret;
12891285
}
@@ -1432,14 +1428,7 @@ class CallInst : public CallBase {
14321428

14331429
public:
14341430
static CallInst *create(FunctionType *FTy, Value *Func,
1435-
ArrayRef<Value *> Args, BBIterator WhereIt,
1436-
BasicBlock *WhereBB, Context &Ctx,
1437-
const Twine &NameStr = "");
1438-
static CallInst *create(FunctionType *FTy, Value *Func,
1439-
ArrayRef<Value *> Args, Instruction *InsertBefore,
1440-
Context &Ctx, const Twine &NameStr = "");
1441-
static CallInst *create(FunctionType *FTy, Value *Func,
1442-
ArrayRef<Value *> Args, BasicBlock *InsertAtEnd,
1431+
ArrayRef<Value *> Args, InsertPosition Pos,
14431432
Context &Ctx, const Twine &NameStr = "");
14441433

14451434
static bool classof(const Value *From) {
@@ -1458,16 +1447,7 @@ class InvokeInst final : public CallBase {
14581447
public:
14591448
static InvokeInst *create(FunctionType *FTy, Value *Func,
14601449
BasicBlock *IfNormal, BasicBlock *IfException,
1461-
ArrayRef<Value *> Args, BBIterator WhereIt,
1462-
BasicBlock *WhereBB, Context &Ctx,
1463-
const Twine &NameStr = "");
1464-
static InvokeInst *create(FunctionType *FTy, Value *Func,
1465-
BasicBlock *IfNormal, BasicBlock *IfException,
1466-
ArrayRef<Value *> Args, Instruction *InsertBefore,
1467-
Context &Ctx, const Twine &NameStr = "");
1468-
static InvokeInst *create(FunctionType *FTy, Value *Func,
1469-
BasicBlock *IfNormal, BasicBlock *IfException,
1470-
ArrayRef<Value *> Args, BasicBlock *InsertAtEnd,
1450+
ArrayRef<Value *> Args, InsertPosition Pos,
14711451
Context &Ctx, const Twine &NameStr = "");
14721452

14731453
static bool classof(const Value *From) {
@@ -1503,18 +1483,7 @@ class CallBrInst final : public CallBase {
15031483
static CallBrInst *create(FunctionType *FTy, Value *Func,
15041484
BasicBlock *DefaultDest,
15051485
ArrayRef<BasicBlock *> IndirectDests,
1506-
ArrayRef<Value *> Args, BBIterator WhereIt,
1507-
BasicBlock *WhereBB, Context &Ctx,
1508-
const Twine &NameStr = "");
1509-
static CallBrInst *create(FunctionType *FTy, Value *Func,
1510-
BasicBlock *DefaultDest,
1511-
ArrayRef<BasicBlock *> IndirectDests,
1512-
ArrayRef<Value *> Args, Instruction *InsertBefore,
1513-
Context &Ctx, const Twine &NameStr = "");
1514-
static CallBrInst *create(FunctionType *FTy, Value *Func,
1515-
BasicBlock *DefaultDest,
1516-
ArrayRef<BasicBlock *> IndirectDests,
1517-
ArrayRef<Value *> Args, BasicBlock *InsertAtEnd,
1486+
ArrayRef<Value *> Args, InsertPosition Pos,
15181487
Context &Ctx, const Twine &NameStr = "");
15191488
static bool classof(const Value *From) {
15201489
return From->getSubclassID() == ClassID::CallBr;
@@ -1543,8 +1512,8 @@ class LandingPadInst : public SingleLLVMInstructionImpl<llvm::LandingPadInst> {
15431512

15441513
public:
15451514
static LandingPadInst *create(Type *RetTy, unsigned NumReservedClauses,
1546-
BBIterator WhereIt, BasicBlock *WhereBB,
1547-
Context &Ctx, const Twine &Name = "");
1515+
InsertPosition Pos, Context &Ctx,
1516+
const Twine &Name = "");
15481517
/// Return 'true' if this landingpad instruction is a
15491518
/// cleanup. I.e., it should be run when unwinding even if its landing pad
15501519
/// doesn't catch the exception.
@@ -1620,8 +1589,8 @@ class CatchPadInst : public FuncletPadInst {
16201589
// for now, as there is no CatchPadInst member function that can undo it.
16211590

16221591
static CatchPadInst *create(Value *ParentPad, ArrayRef<Value *> Args,
1623-
BBIterator WhereIt, BasicBlock *WhereBB,
1624-
Context &Ctx, const Twine &Name = "");
1592+
InsertPosition Pos, Context &Ctx,
1593+
const Twine &Name = "");
16251594
static bool classof(const Value *From) {
16261595
return From->getSubclassID() == ClassID::CatchPad;
16271596
}
@@ -1634,8 +1603,8 @@ class CleanupPadInst : public FuncletPadInst {
16341603

16351604
public:
16361605
static CleanupPadInst *create(Value *ParentPad, ArrayRef<Value *> Args,
1637-
BBIterator WhereIt, BasicBlock *WhereBB,
1638-
Context &Ctx, const Twine &Name = "");
1606+
InsertPosition Pos, Context &Ctx,
1607+
const Twine &Name = "");
16391608
static bool classof(const Value *From) {
16401609
return From->getSubclassID() == ClassID::CleanupPad;
16411610
}

llvm/lib/SandboxIR/Instruction.cpp

Lines changed: 22 additions & 121 deletions
Original file line numberDiff line numberDiff line change
@@ -447,19 +447,8 @@ Value *StoreInst::getPointerOperand() const {
447447
return Ctx.getValue(cast<llvm::StoreInst>(Val)->getPointerOperand());
448448
}
449449

450-
UnreachableInst *UnreachableInst::create(Instruction *InsertBefore,
451-
Context &Ctx) {
452-
auto &Builder = Ctx.getLLVMIRBuilder();
453-
llvm::Instruction *LLVMBefore = InsertBefore->getTopmostLLVMInstruction();
454-
Builder.SetInsertPoint(LLVMBefore);
455-
llvm::UnreachableInst *NewUI = Builder.CreateUnreachable();
456-
return Ctx.createUnreachableInst(NewUI);
457-
}
458-
459-
UnreachableInst *UnreachableInst::create(BasicBlock *InsertAtEnd,
460-
Context &Ctx) {
461-
auto &Builder = Ctx.getLLVMIRBuilder();
462-
Builder.SetInsertPoint(cast<llvm::BasicBlock>(InsertAtEnd->Val));
450+
UnreachableInst *UnreachableInst::create(InsertPosition Pos, Context &Ctx) {
451+
auto &Builder = setInsertPos(Pos);
463452
llvm::UnreachableInst *NewUI = Builder.CreateUnreachable();
464453
return Ctx.createUnreachableInst(NewUI);
465454
}
@@ -478,18 +467,9 @@ ReturnInst *ReturnInst::createCommon(Value *RetVal, IRBuilder<> &Builder,
478467
return Ctx.createReturnInst(NewRI);
479468
}
480469

481-
ReturnInst *ReturnInst::create(Value *RetVal, Instruction *InsertBefore,
482-
Context &Ctx) {
483-
llvm::Instruction *BeforeIR = InsertBefore->getTopmostLLVMInstruction();
484-
auto &Builder = Ctx.getLLVMIRBuilder();
485-
Builder.SetInsertPoint(BeforeIR);
486-
return createCommon(RetVal, Builder, Ctx);
487-
}
488-
489-
ReturnInst *ReturnInst::create(Value *RetVal, BasicBlock *InsertAtEnd,
470+
ReturnInst *ReturnInst::create(Value *RetVal, InsertPosition Pos,
490471
Context &Ctx) {
491-
auto &Builder = Ctx.getLLVMIRBuilder();
492-
Builder.SetInsertPoint(cast<llvm::BasicBlock>(InsertAtEnd->Val));
472+
auto &Builder = setInsertPos(Pos);
493473
return createCommon(RetVal, Builder, Ctx);
494474
}
495475

@@ -534,14 +514,9 @@ void CallBase::setCalledFunction(Function *F) {
534514
}
535515

536516
CallInst *CallInst::create(FunctionType *FTy, Value *Func,
537-
ArrayRef<Value *> Args, BasicBlock::iterator WhereIt,
538-
BasicBlock *WhereBB, Context &Ctx,
539-
const Twine &NameStr) {
540-
auto &Builder = Ctx.getLLVMIRBuilder();
541-
if (WhereIt != WhereBB->end())
542-
Builder.SetInsertPoint((*WhereIt).getTopmostLLVMInstruction());
543-
else
544-
Builder.SetInsertPoint(cast<llvm::BasicBlock>(WhereBB->Val));
517+
ArrayRef<Value *> Args, InsertPosition Pos,
518+
Context &Ctx, const Twine &NameStr) {
519+
auto &Builder = setInsertPos(Pos);
545520
SmallVector<llvm::Value *> LLVMArgs;
546521
LLVMArgs.reserve(Args.size());
547522
for (Value *Arg : Args)
@@ -551,30 +526,11 @@ CallInst *CallInst::create(FunctionType *FTy, Value *Func,
551526
return Ctx.createCallInst(NewCI);
552527
}
553528

554-
CallInst *CallInst::create(FunctionType *FTy, Value *Func,
555-
ArrayRef<Value *> Args, Instruction *InsertBefore,
556-
Context &Ctx, const Twine &NameStr) {
557-
return CallInst::create(FTy, Func, Args, InsertBefore->getIterator(),
558-
InsertBefore->getParent(), Ctx, NameStr);
559-
}
560-
561-
CallInst *CallInst::create(FunctionType *FTy, Value *Func,
562-
ArrayRef<Value *> Args, BasicBlock *InsertAtEnd,
563-
Context &Ctx, const Twine &NameStr) {
564-
return CallInst::create(FTy, Func, Args, InsertAtEnd->end(), InsertAtEnd, Ctx,
565-
NameStr);
566-
}
567-
568529
InvokeInst *InvokeInst::create(FunctionType *FTy, Value *Func,
569530
BasicBlock *IfNormal, BasicBlock *IfException,
570-
ArrayRef<Value *> Args, BBIterator WhereIt,
571-
BasicBlock *WhereBB, Context &Ctx,
572-
const Twine &NameStr) {
573-
auto &Builder = Ctx.getLLVMIRBuilder();
574-
if (WhereIt != WhereBB->end())
575-
Builder.SetInsertPoint((*WhereIt).getTopmostLLVMInstruction());
576-
else
577-
Builder.SetInsertPoint(cast<llvm::BasicBlock>(WhereBB->Val));
531+
ArrayRef<Value *> Args, InsertPosition Pos,
532+
Context &Ctx, const Twine &NameStr) {
533+
auto &Builder = setInsertPos(Pos);
578534
SmallVector<llvm::Value *> LLVMArgs;
579535
LLVMArgs.reserve(Args.size());
580536
for (Value *Arg : Args)
@@ -586,24 +542,6 @@ InvokeInst *InvokeInst::create(FunctionType *FTy, Value *Func,
586542
return Ctx.createInvokeInst(Invoke);
587543
}
588544

589-
InvokeInst *InvokeInst::create(FunctionType *FTy, Value *Func,
590-
BasicBlock *IfNormal, BasicBlock *IfException,
591-
ArrayRef<Value *> Args,
592-
Instruction *InsertBefore, Context &Ctx,
593-
const Twine &NameStr) {
594-
return create(FTy, Func, IfNormal, IfException, Args,
595-
InsertBefore->getIterator(), InsertBefore->getParent(), Ctx,
596-
NameStr);
597-
}
598-
599-
InvokeInst *InvokeInst::create(FunctionType *FTy, Value *Func,
600-
BasicBlock *IfNormal, BasicBlock *IfException,
601-
ArrayRef<Value *> Args, BasicBlock *InsertAtEnd,
602-
Context &Ctx, const Twine &NameStr) {
603-
return create(FTy, Func, IfNormal, IfException, Args, InsertAtEnd->end(),
604-
InsertAtEnd, Ctx, NameStr);
605-
}
606-
607545
BasicBlock *InvokeInst::getNormalDest() const {
608546
return cast<BasicBlock>(
609547
Ctx.getValue(cast<llvm::InvokeInst>(Val)->getNormalDest()));
@@ -633,15 +571,9 @@ BasicBlock *InvokeInst::getSuccessor(unsigned SuccIdx) const {
633571
CallBrInst *CallBrInst::create(FunctionType *FTy, Value *Func,
634572
BasicBlock *DefaultDest,
635573
ArrayRef<BasicBlock *> IndirectDests,
636-
ArrayRef<Value *> Args, BBIterator WhereIt,
637-
BasicBlock *WhereBB, Context &Ctx,
638-
const Twine &NameStr) {
639-
auto &Builder = Ctx.getLLVMIRBuilder();
640-
if (WhereIt != WhereBB->end())
641-
Builder.SetInsertPoint((*WhereIt).getTopmostLLVMInstruction());
642-
else
643-
Builder.SetInsertPoint(cast<llvm::BasicBlock>(WhereBB->Val));
644-
574+
ArrayRef<Value *> Args, InsertPosition Pos,
575+
Context &Ctx, const Twine &NameStr) {
576+
auto &Builder = setInsertPos(Pos);
645577
SmallVector<llvm::BasicBlock *> LLVMIndirectDests;
646578
LLVMIndirectDests.reserve(IndirectDests.size());
647579
for (BasicBlock *IndDest : IndirectDests)
@@ -659,25 +591,6 @@ CallBrInst *CallBrInst::create(FunctionType *FTy, Value *Func,
659591
return Ctx.createCallBrInst(CallBr);
660592
}
661593

662-
CallBrInst *CallBrInst::create(FunctionType *FTy, Value *Func,
663-
BasicBlock *DefaultDest,
664-
ArrayRef<BasicBlock *> IndirectDests,
665-
ArrayRef<Value *> Args,
666-
Instruction *InsertBefore, Context &Ctx,
667-
const Twine &NameStr) {
668-
return create(FTy, Func, DefaultDest, IndirectDests, Args,
669-
InsertBefore->getIterator(), InsertBefore->getParent(), Ctx,
670-
NameStr);
671-
}
672-
CallBrInst *CallBrInst::create(FunctionType *FTy, Value *Func,
673-
BasicBlock *DefaultDest,
674-
ArrayRef<BasicBlock *> IndirectDests,
675-
ArrayRef<Value *> Args, BasicBlock *InsertAtEnd,
676-
Context &Ctx, const Twine &NameStr) {
677-
return create(FTy, Func, DefaultDest, IndirectDests, Args, InsertAtEnd->end(),
678-
InsertAtEnd, Ctx, NameStr);
679-
}
680-
681594
Value *CallBrInst::getIndirectDestLabel(unsigned Idx) const {
682595
return Ctx.getValue(cast<llvm::CallBrInst>(Val)->getIndirectDestLabel(Idx));
683596
}
@@ -720,13 +633,9 @@ BasicBlock *CallBrInst::getSuccessor(unsigned Idx) const {
720633
}
721634

722635
LandingPadInst *LandingPadInst::create(Type *RetTy, unsigned NumReservedClauses,
723-
BBIterator WhereIt, BasicBlock *WhereBB,
724-
Context &Ctx, const Twine &Name) {
725-
auto &Builder = Ctx.getLLVMIRBuilder();
726-
if (WhereIt != WhereBB->end())
727-
Builder.SetInsertPoint((*WhereIt).getTopmostLLVMInstruction());
728-
else
729-
Builder.SetInsertPoint(cast<llvm::BasicBlock>(WhereBB->Val));
636+
InsertPosition Pos, Context &Ctx,
637+
const Twine &Name) {
638+
auto &Builder = setInsertPos(Pos);
730639
llvm::LandingPadInst *LLVMI =
731640
Builder.CreateLandingPad(RetTy->LLVMTy, NumReservedClauses, Name);
732641
return Ctx.createLandingPadInst(LLVMI);
@@ -773,13 +682,9 @@ CatchSwitchInst *CatchPadInst::getCatchSwitch() const {
773682
}
774683

775684
CatchPadInst *CatchPadInst::create(Value *ParentPad, ArrayRef<Value *> Args,
776-
BBIterator WhereIt, BasicBlock *WhereBB,
777-
Context &Ctx, const Twine &Name) {
778-
auto &Builder = Ctx.getLLVMIRBuilder();
779-
if (WhereIt != WhereBB->end())
780-
Builder.SetInsertPoint((*WhereIt).getTopmostLLVMInstruction());
781-
else
782-
Builder.SetInsertPoint(cast<llvm::BasicBlock>(WhereBB->Val));
685+
InsertPosition Pos, Context &Ctx,
686+
const Twine &Name) {
687+
auto &Builder = setInsertPos(Pos);
783688
SmallVector<llvm::Value *> LLVMArgs;
784689
LLVMArgs.reserve(Args.size());
785690
for (auto *Arg : Args)
@@ -790,13 +695,9 @@ CatchPadInst *CatchPadInst::create(Value *ParentPad, ArrayRef<Value *> Args,
790695
}
791696

792697
CleanupPadInst *CleanupPadInst::create(Value *ParentPad, ArrayRef<Value *> Args,
793-
BBIterator WhereIt, BasicBlock *WhereBB,
794-
Context &Ctx, const Twine &Name) {
795-
auto &Builder = Ctx.getLLVMIRBuilder();
796-
if (WhereIt != WhereBB->end())
797-
Builder.SetInsertPoint((*WhereIt).getTopmostLLVMInstruction());
798-
else
799-
Builder.SetInsertPoint(cast<llvm::BasicBlock>(WhereBB->Val));
698+
InsertPosition Pos, Context &Ctx,
699+
const Twine &Name) {
700+
auto &Builder = setInsertPos(Pos);
800701
SmallVector<llvm::Value *> LLVMArgs;
801702
LLVMArgs.reserve(Args.size());
802703
for (auto *Arg : Args)

0 commit comments

Comments
 (0)