@@ -447,19 +447,8 @@ Value *StoreInst::getPointerOperand() const {
447
447
return Ctx.getValue (cast<llvm::StoreInst>(Val)->getPointerOperand ());
448
448
}
449
449
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);
463
452
llvm::UnreachableInst *NewUI = Builder.CreateUnreachable ();
464
453
return Ctx.createUnreachableInst (NewUI);
465
454
}
@@ -478,18 +467,9 @@ ReturnInst *ReturnInst::createCommon(Value *RetVal, IRBuilder<> &Builder,
478
467
return Ctx.createReturnInst (NewRI);
479
468
}
480
469
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,
490
471
Context &Ctx) {
491
- auto &Builder = Ctx.getLLVMIRBuilder ();
492
- Builder.SetInsertPoint (cast<llvm::BasicBlock>(InsertAtEnd->Val ));
472
+ auto &Builder = setInsertPos (Pos);
493
473
return createCommon (RetVal, Builder, Ctx);
494
474
}
495
475
@@ -534,14 +514,9 @@ void CallBase::setCalledFunction(Function *F) {
534
514
}
535
515
536
516
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);
545
520
SmallVector<llvm::Value *> LLVMArgs;
546
521
LLVMArgs.reserve (Args.size ());
547
522
for (Value *Arg : Args)
@@ -551,30 +526,11 @@ CallInst *CallInst::create(FunctionType *FTy, Value *Func,
551
526
return Ctx.createCallInst (NewCI);
552
527
}
553
528
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
-
568
529
InvokeInst *InvokeInst::create (FunctionType *FTy, Value *Func,
569
530
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);
578
534
SmallVector<llvm::Value *> LLVMArgs;
579
535
LLVMArgs.reserve (Args.size ());
580
536
for (Value *Arg : Args)
@@ -586,24 +542,6 @@ InvokeInst *InvokeInst::create(FunctionType *FTy, Value *Func,
586
542
return Ctx.createInvokeInst (Invoke);
587
543
}
588
544
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
-
607
545
BasicBlock *InvokeInst::getNormalDest () const {
608
546
return cast<BasicBlock>(
609
547
Ctx.getValue (cast<llvm::InvokeInst>(Val)->getNormalDest ()));
@@ -633,15 +571,9 @@ BasicBlock *InvokeInst::getSuccessor(unsigned SuccIdx) const {
633
571
CallBrInst *CallBrInst::create (FunctionType *FTy, Value *Func,
634
572
BasicBlock *DefaultDest,
635
573
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);
645
577
SmallVector<llvm::BasicBlock *> LLVMIndirectDests;
646
578
LLVMIndirectDests.reserve (IndirectDests.size ());
647
579
for (BasicBlock *IndDest : IndirectDests)
@@ -659,25 +591,6 @@ CallBrInst *CallBrInst::create(FunctionType *FTy, Value *Func,
659
591
return Ctx.createCallBrInst (CallBr);
660
592
}
661
593
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
-
681
594
Value *CallBrInst::getIndirectDestLabel (unsigned Idx) const {
682
595
return Ctx.getValue (cast<llvm::CallBrInst>(Val)->getIndirectDestLabel (Idx));
683
596
}
@@ -720,13 +633,9 @@ BasicBlock *CallBrInst::getSuccessor(unsigned Idx) const {
720
633
}
721
634
722
635
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);
730
639
llvm::LandingPadInst *LLVMI =
731
640
Builder.CreateLandingPad (RetTy->LLVMTy , NumReservedClauses, Name);
732
641
return Ctx.createLandingPadInst (LLVMI);
@@ -773,13 +682,9 @@ CatchSwitchInst *CatchPadInst::getCatchSwitch() const {
773
682
}
774
683
775
684
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);
783
688
SmallVector<llvm::Value *> LLVMArgs;
784
689
LLVMArgs.reserve (Args.size ());
785
690
for (auto *Arg : Args)
@@ -790,13 +695,9 @@ CatchPadInst *CatchPadInst::create(Value *ParentPad, ArrayRef<Value *> Args,
790
695
}
791
696
792
697
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);
800
701
SmallVector<llvm::Value *> LLVMArgs;
801
702
LLVMArgs.reserve (Args.size ());
802
703
for (auto *Arg : Args)
0 commit comments