Skip to content

Commit d9c95ef

Browse files
authored
[LLVM] Make more use of IRBuilder::CreateIntrinsic. NFC. (llvm#112546)
Convert almost every instance of: CreateCall(Intrinsic::getOrInsertDeclaration(...), ...) to the equivalent CreateIntrinsic call.
1 parent 383df16 commit d9c95ef

File tree

13 files changed

+101
-162
lines changed

13 files changed

+101
-162
lines changed

llvm/lib/CodeGen/SafeStack.cpp

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -368,8 +368,7 @@ Value *SafeStack::getStackGuard(IRBuilder<> &IRB, Function &F) {
368368

369369
if (!StackGuardVar) {
370370
TL.insertSSPDeclarations(*M);
371-
return IRB.CreateCall(
372-
Intrinsic::getOrInsertDeclaration(M, Intrinsic::stackguard));
371+
return IRB.CreateIntrinsic(Intrinsic::stackguard, {}, {});
373372
}
374373

375374
return IRB.CreateLoad(StackPtrTy, StackGuardVar, "StackGuard");

llvm/lib/CodeGen/StackProtector.cpp

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -519,8 +519,7 @@ static Value *getStackGuard(const TargetLoweringBase *TLI, Module *M,
519519
if (SupportsSelectionDAGSP)
520520
*SupportsSelectionDAGSP = true;
521521
TLI->insertSSPDeclarations(*M);
522-
return B.CreateCall(
523-
Intrinsic::getOrInsertDeclaration(M, Intrinsic::stackguard));
522+
return B.CreateIntrinsic(Intrinsic::stackguard, {}, {});
524523
}
525524

526525
/// Insert code into the entry block that stores the stack guard
@@ -541,8 +540,7 @@ static bool CreatePrologue(Function *F, Module *M, Instruction *CheckLoc,
541540
AI = B.CreateAlloca(PtrTy, nullptr, "StackGuardSlot");
542541

543542
Value *GuardSlot = getStackGuard(TLI, M, B, &SupportsSelectionDAGSP);
544-
B.CreateCall(Intrinsic::getOrInsertDeclaration(M, Intrinsic::stackprotector),
545-
{GuardSlot, AI});
543+
B.CreateIntrinsic(Intrinsic::stackprotector, {}, {GuardSlot, AI});
546544
return SupportsSelectionDAGSP;
547545
}
548546

llvm/lib/IR/AutoUpgrade.cpp

Lines changed: 55 additions & 95 deletions
Large diffs are not rendered by default.

llvm/lib/Target/AArch64/AArch64ISelLowering.cpp

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27284,8 +27284,7 @@ Value *AArch64TargetLowering::emitLoadLinked(IRBuilderBase &Builder,
2728427284
void AArch64TargetLowering::emitAtomicCmpXchgNoStoreLLBalance(
2728527285
IRBuilderBase &Builder) const {
2728627286
Module *M = Builder.GetInsertBlock()->getParent()->getParent();
27287-
Builder.CreateCall(
27288-
Intrinsic::getOrInsertDeclaration(M, Intrinsic::aarch64_clrex));
27287+
Builder.CreateIntrinsic(Intrinsic::aarch64_clrex, {}, {});
2728927288
}
2729027289

2729127290
Value *AArch64TargetLowering::emitStoreConditional(IRBuilderBase &Builder,

llvm/lib/Target/AMDGPU/AMDGPUSwLowerLDS.cpp

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -921,9 +921,8 @@ void AMDGPUSwLowerLDS::lowerKernelLDSAccesses(Function *Func,
921921
FunctionCallee AsanFreeFunc = M.getOrInsertFunction(
922922
StringRef("__asan_free_impl"),
923923
FunctionType::get(IRB.getVoidTy(), {Int64Ty, Int64Ty}, false));
924-
Value *ReturnAddr = IRB.CreateCall(
925-
Intrinsic::getOrInsertDeclaration(&M, Intrinsic::returnaddress),
926-
IRB.getInt32(0));
924+
Value *ReturnAddr =
925+
IRB.CreateIntrinsic(Intrinsic::returnaddress, {}, IRB.getInt32(0));
927926
Value *RAPToInt = IRB.CreatePtrToInt(ReturnAddr, Int64Ty);
928927
Value *MallocPtrToInt = IRB.CreatePtrToInt(LoadMallocPtr, Int64Ty);
929928
IRB.CreateCall(AsanFreeFunc, {MallocPtrToInt, RAPToInt});

llvm/lib/Target/ARM/ARMISelLowering.cpp

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21446,8 +21446,7 @@ void ARMTargetLowering::emitAtomicCmpXchgNoStoreLLBalance(
2144621446
if (!Subtarget->hasV7Ops())
2144721447
return;
2144821448
Module *M = Builder.GetInsertBlock()->getParent()->getParent();
21449-
Builder.CreateCall(
21450-
Intrinsic::getOrInsertDeclaration(M, Intrinsic::arm_clrex));
21449+
Builder.CreateIntrinsic(Intrinsic::arm_clrex, {}, {});
2145121450
}
2145221451

2145321452
Value *ARMTargetLowering::emitStoreConditional(IRBuilderBase &Builder,

llvm/lib/Target/PowerPC/PPCISelLowering.cpp

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -12205,11 +12205,8 @@ Instruction *PPCTargetLowering::emitTrailingFence(IRBuilderBase &Builder,
1220512205
// http://www.rdrop.com/users/paulmck/scalability/paper/N2745r.2011.03.04a.html
1220612206
// and http://www.cl.cam.ac.uk/~pes20/cppppc/ for justification.
1220712207
if (isa<LoadInst>(Inst))
12208-
return Builder.CreateCall(
12209-
Intrinsic::getOrInsertDeclaration(
12210-
Builder.GetInsertBlock()->getParent()->getParent(),
12211-
Intrinsic::ppc_cfence, {Inst->getType()}),
12212-
{Inst});
12208+
return Builder.CreateIntrinsic(Intrinsic::ppc_cfence, {Inst->getType()},
12209+
{Inst});
1221312210
// FIXME: Can use isync for rmw operation.
1221412211
return callIntrinsic(Builder, Intrinsic::ppc_lwsync);
1221512212
}

llvm/lib/Target/X86/X86WinEHState.cpp

Lines changed: 7 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -333,12 +333,10 @@ void WinEHStatePass::emitExceptionRegistrationRecord(Function *F) {
333333
// If using _except_handler4, the EHGuard contains: FramePtr xor Cookie.
334334
if (UseStackGuard) {
335335
Value *Val = Builder.CreateLoad(Int32Ty, Cookie);
336-
Value *FrameAddr = Builder.CreateCall(
337-
Intrinsic::getOrInsertDeclaration(
338-
TheModule, Intrinsic::frameaddress,
339-
Builder.getPtrTy(
340-
TheModule->getDataLayout().getAllocaAddrSpace())),
341-
Builder.getInt32(0), "frameaddr");
336+
Value *FrameAddr = Builder.CreateIntrinsic(
337+
Intrinsic::frameaddress,
338+
Builder.getPtrTy(TheModule->getDataLayout().getAllocaAddrSpace()),
339+
Builder.getInt32(0), /*FMFSource=*/nullptr, "frameaddr");
342340
Value *FrameAddrI32 = Builder.CreatePtrToInt(FrameAddr, Int32Ty);
343341
FrameAddrI32 = Builder.CreateXor(FrameAddrI32, Val);
344342
Builder.CreateStore(FrameAddrI32, EHGuardNode);
@@ -369,8 +367,7 @@ void WinEHStatePass::emitExceptionRegistrationRecord(Function *F) {
369367
}
370368

371369
Value *WinEHStatePass::emitEHLSDA(IRBuilder<> &Builder, Function *F) {
372-
return Builder.CreateCall(
373-
Intrinsic::getOrInsertDeclaration(TheModule, Intrinsic::x86_seh_lsda), F);
370+
return Builder.CreateIntrinsic(Intrinsic::x86_seh_lsda, {}, F);
374371
}
375372

376373
/// 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) {
624621
// that it can recover the original frame pointer.
625622
IRBuilder<> Builder(RegNode->getNextNode());
626623
Value *RegNodeI8 = Builder.CreateBitCast(RegNode, Builder.getPtrTy());
627-
Builder.CreateCall(Intrinsic::getOrInsertDeclaration(
628-
TheModule, Intrinsic::x86_seh_ehregnode),
629-
{RegNodeI8});
624+
Builder.CreateIntrinsic(Intrinsic::x86_seh_ehregnode, {}, {RegNodeI8});
630625

631626
if (EHGuardNode) {
632627
IRBuilder<> Builder(EHGuardNode->getNextNode());
633628
Value *EHGuardNodeI8 =
634629
Builder.CreateBitCast(EHGuardNode, Builder.getPtrTy());
635-
Builder.CreateCall(Intrinsic::getOrInsertDeclaration(
636-
TheModule, Intrinsic::x86_seh_ehguard),
637-
{EHGuardNodeI8});
630+
Builder.CreateIntrinsic(Intrinsic::x86_seh_ehguard, {}, {EHGuardNodeI8});
638631
}
639632

640633
// Calculate state numbers.

llvm/lib/Transforms/Instrumentation/AddressSanitizer.cpp

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1866,10 +1866,9 @@ void AddressSanitizer::instrumentAddress(Instruction *OrigIns,
18661866
if (UseCalls && ClOptimizeCallbacks) {
18671867
const ASanAccessInfo AccessInfo(IsWrite, CompileKernel, AccessSizeIndex);
18681868
Module *M = IRB.GetInsertBlock()->getParent()->getParent();
1869-
IRB.CreateCall(
1870-
Intrinsic::getOrInsertDeclaration(M, Intrinsic::asan_check_memaccess),
1871-
{IRB.CreatePointerCast(Addr, PtrTy),
1872-
ConstantInt::get(Int32Ty, AccessInfo.Packed)});
1869+
IRB.CreateIntrinsic(Intrinsic::asan_check_memaccess, {},
1870+
{IRB.CreatePointerCast(Addr, PtrTy),
1871+
ConstantInt::get(Int32Ty, AccessInfo.Packed)});
18731872
return;
18741873
}
18751874

llvm/lib/Transforms/Instrumentation/HWAddressSanitizer.cpp

Lines changed: 9 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1041,19 +1041,18 @@ void HWAddressSanitizer::instrumentMemAccessOutline(Value *Ptr, bool IsWrite,
10411041
}
10421042

10431043
if (UseFixedShadowIntrinsic) {
1044-
IRB.CreateCall(
1045-
Intrinsic::getOrInsertDeclaration(
1046-
M, UseShortGranules
1047-
? Intrinsic::hwasan_check_memaccess_shortgranules_fixedshadow
1048-
: Intrinsic::hwasan_check_memaccess_fixedshadow),
1044+
IRB.CreateIntrinsic(
1045+
UseShortGranules
1046+
? Intrinsic::hwasan_check_memaccess_shortgranules_fixedshadow
1047+
: Intrinsic::hwasan_check_memaccess_fixedshadow,
1048+
{},
10491049
{Ptr, ConstantInt::get(Int32Ty, AccessInfo),
10501050
ConstantInt::get(Int64Ty, Mapping.offset())});
10511051
} else {
1052-
IRB.CreateCall(Intrinsic::getOrInsertDeclaration(
1053-
M, UseShortGranules
1054-
? Intrinsic::hwasan_check_memaccess_shortgranules
1055-
: Intrinsic::hwasan_check_memaccess),
1056-
{ShadowBase, Ptr, ConstantInt::get(Int32Ty, AccessInfo)});
1052+
IRB.CreateIntrinsic(
1053+
UseShortGranules ? Intrinsic::hwasan_check_memaccess_shortgranules
1054+
: Intrinsic::hwasan_check_memaccess,
1055+
{}, {ShadowBase, Ptr, ConstantInt::get(Int32Ty, AccessInfo)});
10571056
}
10581057
}
10591058

llvm/lib/Transforms/Instrumentation/KCFI.cpp

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -110,8 +110,7 @@ PreservedAnalyses KCFIPass::run(Function &F, FunctionAnalysisManager &AM) {
110110
Instruction *ThenTerm =
111111
SplitBlockAndInsertIfThen(Test, Call, false, VeryUnlikelyWeights);
112112
Builder.SetInsertPoint(ThenTerm);
113-
Builder.CreateCall(
114-
Intrinsic::getOrInsertDeclaration(&M, Intrinsic::debugtrap));
113+
Builder.CreateIntrinsic(Intrinsic::debugtrap, {}, {});
115114
++NumKCFIChecks;
116115
}
117116

llvm/lib/Transforms/Instrumentation/PGOInstrumentation.cpp

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -918,8 +918,8 @@ void FunctionInstrumenter::instrument() {
918918
IRBuilder<> Builder(&EntryBB, EntryBB.getFirstInsertionPt());
919919
// llvm.instrprof.cover(i8* <name>, i64 <hash>, i32 <num-counters>,
920920
// i32 <index>)
921-
Builder.CreateCall(
922-
Intrinsic::getOrInsertDeclaration(&M, Intrinsic::instrprof_cover),
921+
Builder.CreateIntrinsic(
922+
Intrinsic::instrprof_cover, {},
923923
{NormalizedNamePtr, CFGHash, Builder.getInt32(1), Builder.getInt32(0)});
924924
return;
925925
}
@@ -971,10 +971,10 @@ void FunctionInstrumenter::instrument() {
971971
IRBuilder<> Builder(&EntryBB, EntryBB.getFirstInsertionPt());
972972
// llvm.instrprof.timestamp(i8* <name>, i64 <hash>, i32 <num-counters>,
973973
// i32 <index>)
974-
Builder.CreateCall(
975-
Intrinsic::getOrInsertDeclaration(&M, Intrinsic::instrprof_timestamp),
976-
{NormalizedNamePtr, CFGHash, Builder.getInt32(NumCounters),
977-
Builder.getInt32(I)});
974+
Builder.CreateIntrinsic(Intrinsic::instrprof_timestamp, {},
975+
{NormalizedNamePtr, CFGHash,
976+
Builder.getInt32(NumCounters),
977+
Builder.getInt32(I)});
978978
I += PGOBlockCoverage ? 8 : 1;
979979
}
980980

@@ -984,12 +984,12 @@ void FunctionInstrumenter::instrument() {
984984
"Cannot get the Instrumentation point");
985985
// llvm.instrprof.increment(i8* <name>, i64 <hash>, i32 <num-counters>,
986986
// i32 <index>)
987-
Builder.CreateCall(Intrinsic::getOrInsertDeclaration(
988-
&M, PGOBlockCoverage
989-
? Intrinsic::instrprof_cover
990-
: Intrinsic::instrprof_increment),
991-
{NormalizedNamePtr, CFGHash,
992-
Builder.getInt32(NumCounters), Builder.getInt32(I++)});
987+
Builder.CreateIntrinsic(PGOBlockCoverage ? Intrinsic::instrprof_cover
988+
: Intrinsic::instrprof_increment,
989+
{},
990+
{NormalizedNamePtr, CFGHash,
991+
Builder.getInt32(NumCounters),
992+
Builder.getInt32(I++)});
993993
}
994994

995995
// Now instrument select instructions:
@@ -1726,10 +1726,10 @@ void SelectInstVisitor::instrumentOneSelectInst(SelectInst &SI) {
17261726
auto *NormalizedFuncNameVarPtr =
17271727
ConstantExpr::getPointerBitCastOrAddrSpaceCast(
17281728
FuncNameVar, PointerType::get(M->getContext(), 0));
1729-
Builder.CreateCall(
1730-
Intrinsic::getOrInsertDeclaration(M, Intrinsic::instrprof_increment_step),
1731-
{NormalizedFuncNameVarPtr, Builder.getInt64(FuncHash),
1732-
Builder.getInt32(TotalNumCtrs), Builder.getInt32(*CurCtrIdx), Step});
1729+
Builder.CreateIntrinsic(Intrinsic::instrprof_increment_step, {},
1730+
{NormalizedFuncNameVarPtr, Builder.getInt64(FuncHash),
1731+
Builder.getInt32(TotalNumCtrs),
1732+
Builder.getInt32(*CurCtrIdx), Step});
17331733
++(*CurCtrIdx);
17341734
}
17351735

llvm/lib/Transforms/Instrumentation/ThreadSanitizer.cpp

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -572,9 +572,7 @@ bool ThreadSanitizer::sanitizeFunction(Function &F,
572572
if ((Res || HasCalls) && ClInstrumentFuncEntryExit) {
573573
InstrumentationIRBuilder IRB(F.getEntryBlock().getFirstNonPHI());
574574
Value *ReturnAddress =
575-
IRB.CreateCall(Intrinsic::getOrInsertDeclaration(
576-
F.getParent(), Intrinsic::returnaddress),
577-
IRB.getInt32(0));
575+
IRB.CreateIntrinsic(Intrinsic::returnaddress, {}, IRB.getInt32(0));
578576
IRB.CreateCall(TsanFuncEntry, ReturnAddress);
579577

580578
EscapeEnumerator EE(F, "tsan_cleanup", ClHandleCxxExceptions);

0 commit comments

Comments
 (0)