[llvm] [LLVM] Make more use of IRBuilder::CreateIntrinsic. NFC. (PR #112546)
Jay Foad via llvm-commits
llvm-commits at lists.llvm.org
Wed Oct 16 06:52:52 PDT 2024
https://github.com/jayfoad created https://github.com/llvm/llvm-project/pull/112546
Convert almost every instance of:
CreateCall(Intrinsic::getOrInsertDeclaration(...), ...)
to the equivalent CreateIntrinsic call.
>From ec559c4ac99f1ec57c414a1a1aee79443df9d32b Mon Sep 17 00:00:00 2001
From: Jay Foad <jay.foad at amd.com>
Date: Wed, 16 Oct 2024 14:49:31 +0100
Subject: [PATCH] [LLVM] Make more use of IRBuilder::CreateIntrinsic. NFC.
Convert almost every instance of:
CreateCall(Intrinsic::getOrInsertDeclaration(...), ...)
to the equivalent CreateIntrinsic call.
---
llvm/lib/CodeGen/SafeStack.cpp | 3 +-
llvm/lib/CodeGen/StackProtector.cpp | 6 +-
llvm/lib/IR/AutoUpgrade.cpp | 150 +++++++-----------
.../Target/AArch64/AArch64ISelLowering.cpp | 3 +-
llvm/lib/Target/AMDGPU/AMDGPUSwLowerLDS.cpp | 5 +-
llvm/lib/Target/ARM/ARMISelLowering.cpp | 3 +-
llvm/lib/Target/PowerPC/PPCISelLowering.cpp | 7 +-
llvm/lib/Target/X86/X86WinEHState.cpp | 21 +--
.../Instrumentation/AddressSanitizer.cpp | 7 +-
.../Instrumentation/HWAddressSanitizer.cpp | 19 ++-
llvm/lib/Transforms/Instrumentation/KCFI.cpp | 3 +-
.../Instrumentation/PGOInstrumentation.cpp | 32 ++--
.../Instrumentation/ThreadSanitizer.cpp | 4 +-
13 files changed, 101 insertions(+), 162 deletions(-)
diff --git a/llvm/lib/CodeGen/SafeStack.cpp b/llvm/lib/CodeGen/SafeStack.cpp
index a50909af8bfcfb..ad2037a2c20b55 100644
--- a/llvm/lib/CodeGen/SafeStack.cpp
+++ b/llvm/lib/CodeGen/SafeStack.cpp
@@ -368,8 +368,7 @@ Value *SafeStack::getStackGuard(IRBuilder<> &IRB, Function &F) {
if (!StackGuardVar) {
TL.insertSSPDeclarations(*M);
- return IRB.CreateCall(
- Intrinsic::getOrInsertDeclaration(M, Intrinsic::stackguard));
+ return IRB.CreateIntrinsic(Intrinsic::stackguard, {}, {});
}
return IRB.CreateLoad(StackPtrTy, StackGuardVar, "StackGuard");
diff --git a/llvm/lib/CodeGen/StackProtector.cpp b/llvm/lib/CodeGen/StackProtector.cpp
index a192161bbd9481..0ce305c4410d27 100644
--- a/llvm/lib/CodeGen/StackProtector.cpp
+++ b/llvm/lib/CodeGen/StackProtector.cpp
@@ -519,8 +519,7 @@ static Value *getStackGuard(const TargetLoweringBase *TLI, Module *M,
if (SupportsSelectionDAGSP)
*SupportsSelectionDAGSP = true;
TLI->insertSSPDeclarations(*M);
- return B.CreateCall(
- Intrinsic::getOrInsertDeclaration(M, Intrinsic::stackguard));
+ return B.CreateIntrinsic(Intrinsic::stackguard, {}, {});
}
/// Insert code into the entry block that stores the stack guard
@@ -541,8 +540,7 @@ static bool CreatePrologue(Function *F, Module *M, Instruction *CheckLoc,
AI = B.CreateAlloca(PtrTy, nullptr, "StackGuardSlot");
Value *GuardSlot = getStackGuard(TLI, M, B, &SupportsSelectionDAGSP);
- B.CreateCall(Intrinsic::getOrInsertDeclaration(M, Intrinsic::stackprotector),
- {GuardSlot, AI});
+ B.CreateIntrinsic(Intrinsic::stackprotector, {}, {GuardSlot, AI});
return SupportsSelectionDAGSP;
}
diff --git a/llvm/lib/IR/AutoUpgrade.cpp b/llvm/lib/IR/AutoUpgrade.cpp
index 32f66f77f19f24..519ff8d74c5af4 100644
--- a/llvm/lib/IR/AutoUpgrade.cpp
+++ b/llvm/lib/IR/AutoUpgrade.cpp
@@ -1745,8 +1745,7 @@ static Value *upgradeX86VPERMT2Intrinsics(IRBuilder<> &Builder, CallBase &CI,
if (!IndexForm)
std::swap(Args[0], Args[1]);
- Value *V = Builder.CreateCall(
- Intrinsic::getOrInsertDeclaration(CI.getModule(), IID), Args);
+ Value *V = Builder.CreateIntrinsic(IID, {}, Args);
Value *PassThru = ZeroMask ? ConstantAggregateZero::get(Ty)
: Builder.CreateBitCast(CI.getArgOperand(1),
Ty);
@@ -2269,8 +2268,7 @@ static bool upgradeAVX512MaskToSelect(StringRef Name, IRBuilder<> &Builder,
SmallVector<Value *, 4> Args(CI.args());
Args.pop_back();
Args.pop_back();
- Rep = Builder.CreateCall(
- Intrinsic::getOrInsertDeclaration(CI.getModule(), IID), Args);
+ Rep = Builder.CreateIntrinsic(IID, {}, Args);
unsigned NumArgs = CI.arg_size();
Rep = emitX86Select(Builder, CI.getArgOperand(NumArgs - 1), Rep,
CI.getArgOperand(NumArgs - 2));
@@ -2325,25 +2323,21 @@ static Value *upgradeNVVMIntrinsicCall(StringRef Name, CallBase *CI,
} else if (Name == "clz.ll") {
// llvm.nvvm.clz.ll returns an i32, but llvm.ctlz.i64 returns an i64.
Value *Arg = CI->getArgOperand(0);
- Value *Ctlz = Builder.CreateCall(
- Intrinsic::getOrInsertDeclaration(F->getParent(), Intrinsic::ctlz,
- {Arg->getType()}),
- {Arg, Builder.getFalse()}, "ctlz");
+ Value *Ctlz = Builder.CreateIntrinsic(Intrinsic::ctlz, {Arg->getType()},
+ {Arg, Builder.getFalse()},
+ /*FMFSource=*/nullptr, "ctlz");
Rep = Builder.CreateTrunc(Ctlz, Builder.getInt32Ty(), "ctlz.trunc");
} else if (Name == "popc.ll") {
// llvm.nvvm.popc.ll returns an i32, but llvm.ctpop.i64 returns an
// i64.
Value *Arg = CI->getArgOperand(0);
- Value *Popc = Builder.CreateCall(
- Intrinsic::getOrInsertDeclaration(F->getParent(), Intrinsic::ctpop,
- {Arg->getType()}),
- Arg, "ctpop");
+ Value *Popc = Builder.CreateIntrinsic(Intrinsic::ctpop, {Arg->getType()},
+ Arg, /*FMFSource=*/nullptr, "ctpop");
Rep = Builder.CreateTrunc(Popc, Builder.getInt32Ty(), "ctpop.trunc");
} else if (Name == "h2f") {
- Rep = Builder.CreateCall(Intrinsic::getOrInsertDeclaration(
- F->getParent(), Intrinsic::convert_from_fp16,
- {Builder.getFloatTy()}),
- CI->getArgOperand(0), "h2f");
+ Rep = Builder.CreateIntrinsic(Intrinsic::convert_from_fp16,
+ {Builder.getFloatTy()}, CI->getArgOperand(0),
+ /*FMFSource=*/nullptr, "h2f");
} else if (Name.consume_front("bitcast.") &&
(Name == "f2i" || Name == "i2f" || Name == "ll2d" ||
Name == "d2ll")) {
@@ -2493,10 +2487,8 @@ static Value *upgradeX86IntrinsicCall(StringRef Name, CallBase *CI, Function *F,
} else if (Name.starts_with("avx.sqrt.p") ||
Name.starts_with("sse2.sqrt.p") ||
Name.starts_with("sse.sqrt.p")) {
- Rep =
- Builder.CreateCall(Intrinsic::getOrInsertDeclaration(
- F->getParent(), Intrinsic::sqrt, CI->getType()),
- {CI->getArgOperand(0)});
+ Rep = Builder.CreateIntrinsic(Intrinsic::sqrt, CI->getType(),
+ {CI->getArgOperand(0)});
} else if (Name.starts_with("avx512.mask.sqrt.p")) {
if (CI->arg_size() == 4 &&
(!isa<ConstantInt>(CI->getArgOperand(3)) ||
@@ -2505,13 +2497,10 @@ static Value *upgradeX86IntrinsicCall(StringRef Name, CallBase *CI, Function *F,
: Intrinsic::x86_avx512_sqrt_pd_512;
Value *Args[] = {CI->getArgOperand(0), CI->getArgOperand(3)};
- Rep = Builder.CreateCall(
- Intrinsic::getOrInsertDeclaration(CI->getModule(), IID), Args);
+ Rep = Builder.CreateIntrinsic(IID, {}, Args);
} else {
- Rep = Builder.CreateCall(
- Intrinsic::getOrInsertDeclaration(F->getParent(), Intrinsic::sqrt,
- CI->getType()),
- {CI->getArgOperand(0)});
+ Rep = Builder.CreateIntrinsic(Intrinsic::sqrt, CI->getType(),
+ {CI->getArgOperand(0)});
}
Rep =
emitX86Select(Builder, CI->getArgOperand(2), Rep, CI->getArgOperand(1));
@@ -2635,9 +2624,8 @@ static Value *upgradeX86IntrinsicCall(StringRef Name, CallBase *CI, Function *F,
break;
}
- Rep = Builder.CreateCall(
- Intrinsic::getOrInsertDeclaration(F->getParent(), IID),
- {CI->getOperand(0), CI->getArgOperand(1)});
+ Rep = Builder.CreateIntrinsic(IID, {},
+ {CI->getOperand(0), CI->getArgOperand(1)});
Rep = applyX86MaskOn1BitsVec(Builder, Rep, CI->getArgOperand(2));
} else if (Name.starts_with("avx512.mask.fpclass.p")) {
Type *OpTy = CI->getArgOperand(0)->getType();
@@ -2659,9 +2647,8 @@ static Value *upgradeX86IntrinsicCall(StringRef Name, CallBase *CI, Function *F,
else
llvm_unreachable("Unexpected intrinsic");
- Rep = Builder.CreateCall(
- Intrinsic::getOrInsertDeclaration(F->getParent(), IID),
- {CI->getOperand(0), CI->getArgOperand(1)});
+ Rep = Builder.CreateIntrinsic(IID, {},
+ {CI->getOperand(0), CI->getArgOperand(1)});
Rep = applyX86MaskOn1BitsVec(Builder, Rep, CI->getArgOperand(2));
} else if (Name.starts_with("avx512.cmp.p")) {
SmallVector<Value *, 4> Args(CI->args());
@@ -2689,8 +2676,7 @@ static Value *upgradeX86IntrinsicCall(StringRef Name, CallBase *CI, Function *F,
std::swap(Mask, Args.back());
Args.push_back(Mask);
- Rep = Builder.CreateCall(
- Intrinsic::getOrInsertDeclaration(F->getParent(), IID), Args);
+ Rep = Builder.CreateIntrinsic(IID, {}, Args);
} else if (Name.starts_with("avx512.mask.cmp.")) {
// Integer compare intrinsics.
unsigned Imm = cast<ConstantInt>(CI->getArgOperand(2))->getZExtValue();
@@ -3413,8 +3399,8 @@ static Value *upgradeX86IntrinsicCall(StringRef Name, CallBase *CI, Function *F,
else
IID = Intrinsic::x86_avx512_add_pd_512;
- Rep = Builder.CreateCall(
- Intrinsic::getOrInsertDeclaration(F->getParent(), IID),
+ Rep = Builder.CreateIntrinsic(
+ IID, {},
{CI->getArgOperand(0), CI->getArgOperand(1), CI->getArgOperand(4)});
} else {
Rep = Builder.CreateFAdd(CI->getArgOperand(0), CI->getArgOperand(1));
@@ -3429,8 +3415,8 @@ static Value *upgradeX86IntrinsicCall(StringRef Name, CallBase *CI, Function *F,
else
IID = Intrinsic::x86_avx512_div_pd_512;
- Rep = Builder.CreateCall(
- Intrinsic::getOrInsertDeclaration(F->getParent(), IID),
+ Rep = Builder.CreateIntrinsic(
+ IID, {},
{CI->getArgOperand(0), CI->getArgOperand(1), CI->getArgOperand(4)});
} else {
Rep = Builder.CreateFDiv(CI->getArgOperand(0), CI->getArgOperand(1));
@@ -3445,8 +3431,8 @@ static Value *upgradeX86IntrinsicCall(StringRef Name, CallBase *CI, Function *F,
else
IID = Intrinsic::x86_avx512_mul_pd_512;
- Rep = Builder.CreateCall(
- Intrinsic::getOrInsertDeclaration(F->getParent(), IID),
+ Rep = Builder.CreateIntrinsic(
+ IID, {},
{CI->getArgOperand(0), CI->getArgOperand(1), CI->getArgOperand(4)});
} else {
Rep = Builder.CreateFMul(CI->getArgOperand(0), CI->getArgOperand(1));
@@ -3461,8 +3447,8 @@ static Value *upgradeX86IntrinsicCall(StringRef Name, CallBase *CI, Function *F,
else
IID = Intrinsic::x86_avx512_sub_pd_512;
- Rep = Builder.CreateCall(
- Intrinsic::getOrInsertDeclaration(F->getParent(), IID),
+ Rep = Builder.CreateIntrinsic(
+ IID, {},
{CI->getArgOperand(0), CI->getArgOperand(1), CI->getArgOperand(4)});
} else {
Rep = Builder.CreateFSub(CI->getArgOperand(0), CI->getArgOperand(1));
@@ -3479,16 +3465,15 @@ static Value *upgradeX86IntrinsicCall(StringRef Name, CallBase *CI, Function *F,
{Intrinsic::x86_avx512_min_ps_512, Intrinsic::x86_avx512_min_pd_512}};
Intrinsic::ID IID = MinMaxTbl[IsMin][IsDouble];
- Rep = Builder.CreateCall(
- Intrinsic::getOrInsertDeclaration(F->getParent(), IID),
+ Rep = Builder.CreateIntrinsic(
+ IID, {},
{CI->getArgOperand(0), CI->getArgOperand(1), CI->getArgOperand(4)});
Rep =
emitX86Select(Builder, CI->getArgOperand(3), Rep, CI->getArgOperand(2));
} else if (Name.starts_with("avx512.mask.lzcnt.")) {
Rep =
- Builder.CreateCall(Intrinsic::getOrInsertDeclaration(
- F->getParent(), Intrinsic::ctlz, CI->getType()),
- {CI->getArgOperand(0), Builder.getInt1(false)});
+ Builder.CreateIntrinsic(Intrinsic::ctlz, CI->getType(),
+ {CI->getArgOperand(0), Builder.getInt1(false)});
Rep =
emitX86Select(Builder, CI->getArgOperand(2), Rep, CI->getArgOperand(1));
} else if (Name.starts_with("avx512.mask.psll")) {
@@ -3732,10 +3717,7 @@ static Value *upgradeX86IntrinsicCall(StringRef Name, CallBase *CI, Function *F,
if (NegAcc)
Ops[2] = Builder.CreateFNeg(Ops[2]);
- Rep = Builder.CreateCall(
- Intrinsic::getOrInsertDeclaration(CI->getModule(), Intrinsic::fma,
- Ops[0]->getType()),
- Ops);
+ Rep = Builder.CreateIntrinsic(Intrinsic::fma, Ops[0]->getType(), Ops);
if (IsScalar)
Rep = Builder.CreateInsertElement(CI->getArgOperand(0), Rep, (uint64_t)0);
@@ -3747,10 +3729,7 @@ static Value *upgradeX86IntrinsicCall(StringRef Name, CallBase *CI, Function *F,
Ops[1] = Builder.CreateExtractElement(Ops[1], (uint64_t)0);
Ops[2] = Builder.CreateExtractElement(Ops[2], (uint64_t)0);
- Rep = Builder.CreateCall(
- Intrinsic::getOrInsertDeclaration(CI->getModule(), Intrinsic::fma,
- Ops[0]->getType()),
- Ops);
+ Rep = Builder.CreateIntrinsic(Intrinsic::fma, Ops[0]->getType(), Ops);
Rep = Builder.CreateInsertElement(Constant::getNullValue(CI->getType()),
Rep, (uint64_t)0);
@@ -3846,9 +3825,7 @@ static Value *upgradeX86IntrinsicCall(StringRef Name, CallBase *CI, Function *F,
else
IID = Intrinsic::x86_avx512_vfmadd_pd_512;
- Rep = Builder.CreateCall(
- Intrinsic::getOrInsertDeclaration(F->getParent(), IID),
- {A, B, C, CI->getArgOperand(4)});
+ Rep = Builder.CreateIntrinsic(IID, {}, {A, B, C, CI->getArgOperand(4)});
} else {
Function *FMA = Intrinsic::getOrInsertDeclaration(
CI->getModule(), Intrinsic::fma, A->getType());
@@ -3878,8 +3855,7 @@ static Value *upgradeX86IntrinsicCall(StringRef Name, CallBase *CI, Function *F,
Value *Ops[] = {CI->getArgOperand(0), CI->getArgOperand(1),
CI->getArgOperand(2)};
Ops[2] = Builder.CreateFNeg(Ops[2]);
- Rep = Builder.CreateCall(
- Intrinsic::getOrInsertDeclaration(F->getParent(), IID), Ops);
+ Rep = Builder.CreateIntrinsic(IID, {}, Ops);
} else if (Name.starts_with("avx512.mask.vfmaddsub.p") ||
Name.starts_with("avx512.mask3.vfmaddsub.p") ||
Name.starts_with("avx512.maskz.vfmaddsub.p") ||
@@ -3902,8 +3878,7 @@ static Value *upgradeX86IntrinsicCall(StringRef Name, CallBase *CI, Function *F,
if (IsSubAdd)
Ops[2] = Builder.CreateFNeg(Ops[2]);
- Rep = Builder.CreateCall(
- Intrinsic::getOrInsertDeclaration(F->getParent(), IID), Ops);
+ Rep = Builder.CreateIntrinsic(IID, {}, Ops);
} else {
int NumElts = cast<FixedVectorType>(CI->getType())->getNumElements();
@@ -3954,8 +3929,7 @@ static Value *upgradeX86IntrinsicCall(StringRef Name, CallBase *CI, Function *F,
Value *Args[] = {CI->getArgOperand(0), CI->getArgOperand(1),
CI->getArgOperand(2), CI->getArgOperand(3)};
- Rep = Builder.CreateCall(
- Intrinsic::getOrInsertDeclaration(CI->getModule(), IID), Args);
+ Rep = Builder.CreateIntrinsic(IID, {}, Args);
Value *PassThru = ZeroMask ? ConstantAggregateZero::get(CI->getType())
: CI->getArgOperand(0);
Rep = emitX86Select(Builder, CI->getArgOperand(4), Rep, PassThru);
@@ -3982,8 +3956,7 @@ static Value *upgradeX86IntrinsicCall(StringRef Name, CallBase *CI, Function *F,
Value *Args[] = {CI->getArgOperand(0), CI->getArgOperand(1),
CI->getArgOperand(2)};
- Rep = Builder.CreateCall(
- Intrinsic::getOrInsertDeclaration(CI->getModule(), IID), Args);
+ Rep = Builder.CreateIntrinsic(IID, {}, Args);
Value *PassThru = ZeroMask ? ConstantAggregateZero::get(CI->getType())
: CI->getArgOperand(0);
Rep = emitX86Select(Builder, CI->getArgOperand(3), Rep, PassThru);
@@ -4018,8 +3991,7 @@ static Value *upgradeX86IntrinsicCall(StringRef Name, CallBase *CI, Function *F,
Value *Args[] = {CI->getArgOperand(0), CI->getArgOperand(1),
CI->getArgOperand(2)};
- Rep = Builder.CreateCall(
- Intrinsic::getOrInsertDeclaration(CI->getModule(), IID), Args);
+ Rep = Builder.CreateIntrinsic(IID, {}, Args);
Value *PassThru = ZeroMask ? ConstantAggregateZero::get(CI->getType())
: CI->getArgOperand(0);
Rep = emitX86Select(Builder, CI->getArgOperand(3), Rep, PassThru);
@@ -4048,8 +4020,7 @@ static Value *upgradeX86IntrinsicCall(StringRef Name, CallBase *CI, Function *F,
Value *Args[] = {CI->getArgOperand(0), CI->getArgOperand(1),
CI->getArgOperand(2)};
- Rep = Builder.CreateCall(
- Intrinsic::getOrInsertDeclaration(CI->getModule(), IID), Args);
+ Rep = Builder.CreateIntrinsic(IID, {}, Args);
Value *PassThru = ZeroMask ? ConstantAggregateZero::get(CI->getType())
: CI->getArgOperand(0);
Rep = emitX86Select(Builder, CI->getArgOperand(3), Rep, PassThru);
@@ -4071,8 +4042,7 @@ static Value *upgradeX86IntrinsicCall(StringRef Name, CallBase *CI, Function *F,
// Make a call with 3 operands.
Value *Args[] = {CI->getArgOperand(0), CI->getArgOperand(1),
CI->getArgOperand(2)};
- Value *NewCall = Builder.CreateCall(
- Intrinsic::getOrInsertDeclaration(CI->getModule(), IID), Args);
+ Value *NewCall = Builder.CreateIntrinsic(IID, {}, Args);
// Extract the second result and store it.
Value *Data = Builder.CreateExtractValue(NewCall, 1);
@@ -4127,20 +4097,15 @@ static Value *upgradeARMIntrinsicCall(StringRef Name, CallBase *CI, Function *F,
if (Name == "mve.vctp64.old") {
// Replace the old v4i1 vctp64 with a v2i1 vctp and predicate-casts to the
// correct type.
- Value *VCTP =
- Builder.CreateCall(Intrinsic::getOrInsertDeclaration(
- F->getParent(), Intrinsic::arm_mve_vctp64),
- CI->getArgOperand(0), CI->getName());
- Value *C1 = Builder.CreateCall(
- Intrinsic::getOrInsertDeclaration(
- F->getParent(), Intrinsic::arm_mve_pred_v2i,
- {VectorType::get(Builder.getInt1Ty(), 2, false)}),
- VCTP);
- return Builder.CreateCall(
- Intrinsic::getOrInsertDeclaration(
- F->getParent(), Intrinsic::arm_mve_pred_i2v,
- {VectorType::get(Builder.getInt1Ty(), 4, false)}),
- C1);
+ Value *VCTP = Builder.CreateIntrinsic(Intrinsic::arm_mve_vctp64, {},
+ CI->getArgOperand(0),
+ /*FMFSource=*/nullptr, CI->getName());
+ Value *C1 = Builder.CreateIntrinsic(
+ Intrinsic::arm_mve_pred_v2i,
+ {VectorType::get(Builder.getInt1Ty(), 2, false)}, VCTP);
+ return Builder.CreateIntrinsic(
+ Intrinsic::arm_mve_pred_i2v,
+ {VectorType::get(Builder.getInt1Ty(), 4, false)}, C1);
} else if (Name == "mve.mull.int.predicated.v2i64.v4i32.v4i1" ||
Name == "mve.vqdmull.predicated.v2i64.v4i32.v4i1" ||
Name == "mve.vldr.gather.base.predicated.v2i64.v2i64.v4i1" ||
@@ -4198,15 +4163,10 @@ static Value *upgradeARMIntrinsicCall(StringRef Name, CallBase *CI, Function *F,
for (Value *Op : CI->args()) {
Type *Ty = Op->getType();
if (Ty->getScalarSizeInBits() == 1) {
- Value *C1 = Builder.CreateCall(
- Intrinsic::getOrInsertDeclaration(
- F->getParent(), Intrinsic::arm_mve_pred_v2i,
- {VectorType::get(Builder.getInt1Ty(), 4, false)}),
- Op);
- Op = Builder.CreateCall(
- Intrinsic::getOrInsertDeclaration(
- F->getParent(), Intrinsic::arm_mve_pred_i2v, {V2I1Ty}),
- C1);
+ Value *C1 = Builder.CreateIntrinsic(
+ Intrinsic::arm_mve_pred_v2i,
+ {VectorType::get(Builder.getInt1Ty(), 4, false)}, Op);
+ Op = Builder.CreateIntrinsic(Intrinsic::arm_mve_pred_i2v, {V2I1Ty}, C1);
}
Ops.push_back(Op);
}
diff --git a/llvm/lib/Target/AArch64/AArch64ISelLowering.cpp b/llvm/lib/Target/AArch64/AArch64ISelLowering.cpp
index ed06d8a5d63013..6ec492227d9f19 100644
--- a/llvm/lib/Target/AArch64/AArch64ISelLowering.cpp
+++ b/llvm/lib/Target/AArch64/AArch64ISelLowering.cpp
@@ -27284,8 +27284,7 @@ Value *AArch64TargetLowering::emitLoadLinked(IRBuilderBase &Builder,
void AArch64TargetLowering::emitAtomicCmpXchgNoStoreLLBalance(
IRBuilderBase &Builder) const {
Module *M = Builder.GetInsertBlock()->getParent()->getParent();
- Builder.CreateCall(
- Intrinsic::getOrInsertDeclaration(M, Intrinsic::aarch64_clrex));
+ Builder.CreateIntrinsic(Intrinsic::aarch64_clrex, {}, {});
}
Value *AArch64TargetLowering::emitStoreConditional(IRBuilderBase &Builder,
diff --git a/llvm/lib/Target/AMDGPU/AMDGPUSwLowerLDS.cpp b/llvm/lib/Target/AMDGPU/AMDGPUSwLowerLDS.cpp
index cfce56f0bfe968..51af16c48f7097 100644
--- a/llvm/lib/Target/AMDGPU/AMDGPUSwLowerLDS.cpp
+++ b/llvm/lib/Target/AMDGPU/AMDGPUSwLowerLDS.cpp
@@ -921,9 +921,8 @@ void AMDGPUSwLowerLDS::lowerKernelLDSAccesses(Function *Func,
FunctionCallee AsanFreeFunc = M.getOrInsertFunction(
StringRef("__asan_free_impl"),
FunctionType::get(IRB.getVoidTy(), {Int64Ty, Int64Ty}, false));
- Value *ReturnAddr = IRB.CreateCall(
- Intrinsic::getOrInsertDeclaration(&M, Intrinsic::returnaddress),
- IRB.getInt32(0));
+ Value *ReturnAddr =
+ IRB.CreateIntrinsic(Intrinsic::returnaddress, {}, IRB.getInt32(0));
Value *RAPToInt = IRB.CreatePtrToInt(ReturnAddr, Int64Ty);
Value *MallocPtrToInt = IRB.CreatePtrToInt(LoadMallocPtr, Int64Ty);
IRB.CreateCall(AsanFreeFunc, {MallocPtrToInt, RAPToInt});
diff --git a/llvm/lib/Target/ARM/ARMISelLowering.cpp b/llvm/lib/Target/ARM/ARMISelLowering.cpp
index a35582bebb08a3..75a4ccb7b35329 100644
--- a/llvm/lib/Target/ARM/ARMISelLowering.cpp
+++ b/llvm/lib/Target/ARM/ARMISelLowering.cpp
@@ -21446,8 +21446,7 @@ void ARMTargetLowering::emitAtomicCmpXchgNoStoreLLBalance(
if (!Subtarget->hasV7Ops())
return;
Module *M = Builder.GetInsertBlock()->getParent()->getParent();
- Builder.CreateCall(
- Intrinsic::getOrInsertDeclaration(M, Intrinsic::arm_clrex));
+ Builder.CreateIntrinsic(Intrinsic::arm_clrex, {}, {});
}
Value *ARMTargetLowering::emitStoreConditional(IRBuilderBase &Builder,
diff --git a/llvm/lib/Target/PowerPC/PPCISelLowering.cpp b/llvm/lib/Target/PowerPC/PPCISelLowering.cpp
index 911d92f0c4846b..cec1e507f08f2f 100644
--- a/llvm/lib/Target/PowerPC/PPCISelLowering.cpp
+++ b/llvm/lib/Target/PowerPC/PPCISelLowering.cpp
@@ -12205,11 +12205,8 @@ Instruction *PPCTargetLowering::emitTrailingFence(IRBuilderBase &Builder,
// http://www.rdrop.com/users/paulmck/scalability/paper/N2745r.2011.03.04a.html
// and http://www.cl.cam.ac.uk/~pes20/cppppc/ for justification.
if (isa<LoadInst>(Inst))
- return Builder.CreateCall(
- Intrinsic::getOrInsertDeclaration(
- Builder.GetInsertBlock()->getParent()->getParent(),
- Intrinsic::ppc_cfence, {Inst->getType()}),
- {Inst});
+ return Builder.CreateIntrinsic(Intrinsic::ppc_cfence, {Inst->getType()},
+ {Inst});
// FIXME: Can use isync for rmw operation.
return callIntrinsic(Builder, Intrinsic::ppc_lwsync);
}
diff --git a/llvm/lib/Target/X86/X86WinEHState.cpp b/llvm/lib/Target/X86/X86WinEHState.cpp
index 05fc6f13129f24..bc9fd801f94b22 100644
--- a/llvm/lib/Target/X86/X86WinEHState.cpp
+++ b/llvm/lib/Target/X86/X86WinEHState.cpp
@@ -333,12 +333,10 @@ void WinEHStatePass::emitExceptionRegistrationRecord(Function *F) {
// If using _except_handler4, the EHGuard contains: FramePtr xor Cookie.
if (UseStackGuard) {
Value *Val = Builder.CreateLoad(Int32Ty, Cookie);
- Value *FrameAddr = Builder.CreateCall(
- Intrinsic::getOrInsertDeclaration(
- TheModule, Intrinsic::frameaddress,
- Builder.getPtrTy(
- TheModule->getDataLayout().getAllocaAddrSpace())),
- Builder.getInt32(0), "frameaddr");
+ Value *FrameAddr = Builder.CreateIntrinsic(
+ Intrinsic::frameaddress,
+ Builder.getPtrTy(TheModule->getDataLayout().getAllocaAddrSpace()),
+ Builder.getInt32(0), /*FMFSource=*/nullptr, "frameaddr");
Value *FrameAddrI32 = Builder.CreatePtrToInt(FrameAddr, Int32Ty);
FrameAddrI32 = Builder.CreateXor(FrameAddrI32, Val);
Builder.CreateStore(FrameAddrI32, EHGuardNode);
@@ -369,8 +367,7 @@ void WinEHStatePass::emitExceptionRegistrationRecord(Function *F) {
}
Value *WinEHStatePass::emitEHLSDA(IRBuilder<> &Builder, Function *F) {
- return Builder.CreateCall(
- Intrinsic::getOrInsertDeclaration(TheModule, Intrinsic::x86_seh_lsda), F);
+ return Builder.CreateIntrinsic(Intrinsic::x86_seh_lsda, {}, F);
}
/// Generate a thunk that puts the LSDA of ParentFunc in EAX and then calls
@@ -624,17 +621,13 @@ void WinEHStatePass::addStateStores(Function &F, WinEHFuncInfo &FuncInfo) {
// that it can recover the original frame pointer.
IRBuilder<> Builder(RegNode->getNextNode());
Value *RegNodeI8 = Builder.CreateBitCast(RegNode, Builder.getPtrTy());
- Builder.CreateCall(Intrinsic::getOrInsertDeclaration(
- TheModule, Intrinsic::x86_seh_ehregnode),
- {RegNodeI8});
+ Builder.CreateIntrinsic(Intrinsic::x86_seh_ehregnode, {}, {RegNodeI8});
if (EHGuardNode) {
IRBuilder<> Builder(EHGuardNode->getNextNode());
Value *EHGuardNodeI8 =
Builder.CreateBitCast(EHGuardNode, Builder.getPtrTy());
- Builder.CreateCall(Intrinsic::getOrInsertDeclaration(
- TheModule, Intrinsic::x86_seh_ehguard),
- {EHGuardNodeI8});
+ Builder.CreateIntrinsic(Intrinsic::x86_seh_ehguard, {}, {EHGuardNodeI8});
}
// Calculate state numbers.
diff --git a/llvm/lib/Transforms/Instrumentation/AddressSanitizer.cpp b/llvm/lib/Transforms/Instrumentation/AddressSanitizer.cpp
index 02d9fab309d83b..9d4f05780cb6e7 100644
--- a/llvm/lib/Transforms/Instrumentation/AddressSanitizer.cpp
+++ b/llvm/lib/Transforms/Instrumentation/AddressSanitizer.cpp
@@ -1866,10 +1866,9 @@ void AddressSanitizer::instrumentAddress(Instruction *OrigIns,
if (UseCalls && ClOptimizeCallbacks) {
const ASanAccessInfo AccessInfo(IsWrite, CompileKernel, AccessSizeIndex);
Module *M = IRB.GetInsertBlock()->getParent()->getParent();
- IRB.CreateCall(
- Intrinsic::getOrInsertDeclaration(M, Intrinsic::asan_check_memaccess),
- {IRB.CreatePointerCast(Addr, PtrTy),
- ConstantInt::get(Int32Ty, AccessInfo.Packed)});
+ IRB.CreateIntrinsic(Intrinsic::asan_check_memaccess, {},
+ {IRB.CreatePointerCast(Addr, PtrTy),
+ ConstantInt::get(Int32Ty, AccessInfo.Packed)});
return;
}
diff --git a/llvm/lib/Transforms/Instrumentation/HWAddressSanitizer.cpp b/llvm/lib/Transforms/Instrumentation/HWAddressSanitizer.cpp
index 5ec4973ea03d8f..c55043a9b20f5c 100644
--- a/llvm/lib/Transforms/Instrumentation/HWAddressSanitizer.cpp
+++ b/llvm/lib/Transforms/Instrumentation/HWAddressSanitizer.cpp
@@ -1041,19 +1041,18 @@ void HWAddressSanitizer::instrumentMemAccessOutline(Value *Ptr, bool IsWrite,
}
if (UseFixedShadowIntrinsic) {
- IRB.CreateCall(
- Intrinsic::getOrInsertDeclaration(
- M, UseShortGranules
- ? Intrinsic::hwasan_check_memaccess_shortgranules_fixedshadow
- : Intrinsic::hwasan_check_memaccess_fixedshadow),
+ IRB.CreateIntrinsic(
+ UseShortGranules
+ ? Intrinsic::hwasan_check_memaccess_shortgranules_fixedshadow
+ : Intrinsic::hwasan_check_memaccess_fixedshadow,
+ {},
{Ptr, ConstantInt::get(Int32Ty, AccessInfo),
ConstantInt::get(Int64Ty, Mapping.offset())});
} else {
- IRB.CreateCall(Intrinsic::getOrInsertDeclaration(
- M, UseShortGranules
- ? Intrinsic::hwasan_check_memaccess_shortgranules
- : Intrinsic::hwasan_check_memaccess),
- {ShadowBase, Ptr, ConstantInt::get(Int32Ty, AccessInfo)});
+ IRB.CreateIntrinsic(
+ UseShortGranules ? Intrinsic::hwasan_check_memaccess_shortgranules
+ : Intrinsic::hwasan_check_memaccess,
+ {}, {ShadowBase, Ptr, ConstantInt::get(Int32Ty, AccessInfo)});
}
}
diff --git a/llvm/lib/Transforms/Instrumentation/KCFI.cpp b/llvm/lib/Transforms/Instrumentation/KCFI.cpp
index bbe0f4c6178192..4b653a83a896e7 100644
--- a/llvm/lib/Transforms/Instrumentation/KCFI.cpp
+++ b/llvm/lib/Transforms/Instrumentation/KCFI.cpp
@@ -110,8 +110,7 @@ PreservedAnalyses KCFIPass::run(Function &F, FunctionAnalysisManager &AM) {
Instruction *ThenTerm =
SplitBlockAndInsertIfThen(Test, Call, false, VeryUnlikelyWeights);
Builder.SetInsertPoint(ThenTerm);
- Builder.CreateCall(
- Intrinsic::getOrInsertDeclaration(&M, Intrinsic::debugtrap));
+ Builder.CreateIntrinsic(Intrinsic::debugtrap, {}, {});
++NumKCFIChecks;
}
diff --git a/llvm/lib/Transforms/Instrumentation/PGOInstrumentation.cpp b/llvm/lib/Transforms/Instrumentation/PGOInstrumentation.cpp
index e6e474ed376069..919660e7a040f2 100644
--- a/llvm/lib/Transforms/Instrumentation/PGOInstrumentation.cpp
+++ b/llvm/lib/Transforms/Instrumentation/PGOInstrumentation.cpp
@@ -918,8 +918,8 @@ void FunctionInstrumenter::instrument() {
IRBuilder<> Builder(&EntryBB, EntryBB.getFirstInsertionPt());
// llvm.instrprof.cover(i8* <name>, i64 <hash>, i32 <num-counters>,
// i32 <index>)
- Builder.CreateCall(
- Intrinsic::getOrInsertDeclaration(&M, Intrinsic::instrprof_cover),
+ Builder.CreateIntrinsic(
+ Intrinsic::instrprof_cover, {},
{NormalizedNamePtr, CFGHash, Builder.getInt32(1), Builder.getInt32(0)});
return;
}
@@ -971,10 +971,10 @@ void FunctionInstrumenter::instrument() {
IRBuilder<> Builder(&EntryBB, EntryBB.getFirstInsertionPt());
// llvm.instrprof.timestamp(i8* <name>, i64 <hash>, i32 <num-counters>,
// i32 <index>)
- Builder.CreateCall(
- Intrinsic::getOrInsertDeclaration(&M, Intrinsic::instrprof_timestamp),
- {NormalizedNamePtr, CFGHash, Builder.getInt32(NumCounters),
- Builder.getInt32(I)});
+ Builder.CreateIntrinsic(Intrinsic::instrprof_timestamp, {},
+ {NormalizedNamePtr, CFGHash,
+ Builder.getInt32(NumCounters),
+ Builder.getInt32(I)});
I += PGOBlockCoverage ? 8 : 1;
}
@@ -984,12 +984,12 @@ void FunctionInstrumenter::instrument() {
"Cannot get the Instrumentation point");
// llvm.instrprof.increment(i8* <name>, i64 <hash>, i32 <num-counters>,
// i32 <index>)
- Builder.CreateCall(Intrinsic::getOrInsertDeclaration(
- &M, PGOBlockCoverage
- ? Intrinsic::instrprof_cover
- : Intrinsic::instrprof_increment),
- {NormalizedNamePtr, CFGHash,
- Builder.getInt32(NumCounters), Builder.getInt32(I++)});
+ Builder.CreateIntrinsic(PGOBlockCoverage ? Intrinsic::instrprof_cover
+ : Intrinsic::instrprof_increment,
+ {},
+ {NormalizedNamePtr, CFGHash,
+ Builder.getInt32(NumCounters),
+ Builder.getInt32(I++)});
}
// Now instrument select instructions:
@@ -1726,10 +1726,10 @@ void SelectInstVisitor::instrumentOneSelectInst(SelectInst &SI) {
auto *NormalizedFuncNameVarPtr =
ConstantExpr::getPointerBitCastOrAddrSpaceCast(
FuncNameVar, PointerType::get(M->getContext(), 0));
- Builder.CreateCall(
- Intrinsic::getOrInsertDeclaration(M, Intrinsic::instrprof_increment_step),
- {NormalizedFuncNameVarPtr, Builder.getInt64(FuncHash),
- Builder.getInt32(TotalNumCtrs), Builder.getInt32(*CurCtrIdx), Step});
+ Builder.CreateIntrinsic(Intrinsic::instrprof_increment_step, {},
+ {NormalizedFuncNameVarPtr, Builder.getInt64(FuncHash),
+ Builder.getInt32(TotalNumCtrs),
+ Builder.getInt32(*CurCtrIdx), Step});
++(*CurCtrIdx);
}
diff --git a/llvm/lib/Transforms/Instrumentation/ThreadSanitizer.cpp b/llvm/lib/Transforms/Instrumentation/ThreadSanitizer.cpp
index 388addfab181a4..915dc70336ded9 100644
--- a/llvm/lib/Transforms/Instrumentation/ThreadSanitizer.cpp
+++ b/llvm/lib/Transforms/Instrumentation/ThreadSanitizer.cpp
@@ -572,9 +572,7 @@ bool ThreadSanitizer::sanitizeFunction(Function &F,
if ((Res || HasCalls) && ClInstrumentFuncEntryExit) {
InstrumentationIRBuilder IRB(F.getEntryBlock().getFirstNonPHI());
Value *ReturnAddress =
- IRB.CreateCall(Intrinsic::getOrInsertDeclaration(
- F.getParent(), Intrinsic::returnaddress),
- IRB.getInt32(0));
+ IRB.CreateIntrinsic(Intrinsic::returnaddress, {}, IRB.getInt32(0));
IRB.CreateCall(TsanFuncEntry, ReturnAddress);
EscapeEnumerator EE(F, "tsan_cleanup", ClHandleCxxExceptions);
More information about the llvm-commits
mailing list