aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib/Transforms/Utils/InlineFunction.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'llvm/lib/Transforms/Utils/InlineFunction.cpp')
-rw-r--r--llvm/lib/Transforms/Utils/InlineFunction.cpp16
1 files changed, 2 insertions, 14 deletions
diff --git a/llvm/lib/Transforms/Utils/InlineFunction.cpp b/llvm/lib/Transforms/Utils/InlineFunction.cpp
index 203e812..b0b7ca4 100644
--- a/llvm/lib/Transforms/Utils/InlineFunction.cpp
+++ b/llvm/lib/Transforms/Utils/InlineFunction.cpp
@@ -1864,13 +1864,7 @@ llvm::InlineResult llvm::InlineFunction(CallBase &CB, InlineFunctionInfo &IFI,
OpDefs.emplace_back("deopt", std::move(MergedDeoptArgs));
}
- Instruction *NewI = nullptr;
- if (isa<CallInst>(ICS))
- NewI = CallInst::Create(cast<CallInst>(ICS), OpDefs, ICS);
- else if (isa<CallBrInst>(ICS))
- NewI = CallBrInst::Create(cast<CallBrInst>(ICS), OpDefs, ICS);
- else
- NewI = InvokeInst::Create(cast<InvokeInst>(ICS), OpDefs, ICS);
+ Instruction *NewI = CallBase::Create(ICS, OpDefs, ICS);
// Note: the RAUW does the appropriate fixup in VMap, so we need to do
// this even if the call returns void.
@@ -2166,13 +2160,7 @@ llvm::InlineResult llvm::InlineFunction(CallBase &CB, InlineFunctionInfo &IFI,
I->getOperandBundlesAsDefs(OpBundles);
OpBundles.emplace_back("funclet", CallSiteEHPad);
- Instruction *NewInst;
- if (auto *CallI = dyn_cast<CallInst>(I))
- NewInst = CallInst::Create(CallI, OpBundles, CallI);
- else if (auto *CallBrI = dyn_cast<CallBrInst>(I))
- NewInst = CallBrInst::Create(CallBrI, OpBundles, CallBrI);
- else
- NewInst = InvokeInst::Create(cast<InvokeInst>(I), OpBundles, I);
+ Instruction *NewInst = CallBase::Create(I, OpBundles, I);
NewInst->takeName(I);
I->replaceAllUsesWith(NewInst);
I->eraseFromParent();