[llvm-branch-commits] [llvm] 45d5dfb - [PreISelIntrinsicLowering] Use TLI for correct function
Tobias Hieta via llvm-branch-commits
llvm-branch-commits at lists.llvm.org
Mon Aug 21 01:08:14 PDT 2023
Author: Nikita Popov
Date: 2023-08-21T09:53:10+02:00
New Revision: 45d5dfbd1f76b1cb0fc7f7a0076599f04262139b
URL: https://github.com/llvm/llvm-project/commit/45d5dfbd1f76b1cb0fc7f7a0076599f04262139b
DIFF: https://github.com/llvm/llvm-project/commit/45d5dfbd1f76b1cb0fc7f7a0076599f04262139b.diff
LOG: [PreISelIntrinsicLowering] Use TLI for correct function
We should query the subtarget of the calling function, not of the
intrinsic.
This probably makes no functional difference (as libcalls are
unlikely to vary across subtargets), but fixes minor compile-time
regressions from unnecessary subtarget instantiations.
Followup to D157567.
Differential Revision: https://reviews.llvm.org/D157848
(cherry picked from commit 66bb7521625826cab6fcc24662c053deee1ef90c)
Added:
Modified:
llvm/lib/CodeGen/PreISelIntrinsicLowering.cpp
Removed:
################################################################################
diff --git a/llvm/lib/CodeGen/PreISelIntrinsicLowering.cpp b/llvm/lib/CodeGen/PreISelIntrinsicLowering.cpp
index d62cbb02aee452..5b822b5d7b9572 100644
--- a/llvm/lib/CodeGen/PreISelIntrinsicLowering.cpp
+++ b/llvm/lib/CodeGen/PreISelIntrinsicLowering.cpp
@@ -189,15 +189,16 @@ bool PreISelIntrinsicLowering::shouldExpandMemIntrinsicWithSize(
return SizeVal > Threshold || Threshold == 0;
}
-static bool canEmitLibcall(const TargetLowering &TLI, RTLIB::Libcall LC) {
+static bool canEmitLibcall(const TargetMachine &TM, Function *F,
+ RTLIB::Libcall LC) {
// TODO: Should this consider the address space of the memcpy?
- return TLI.getLibcallName(LC) != nullptr;
+ const TargetLowering *TLI = TM.getSubtargetImpl(*F)->getTargetLowering();
+ return TLI->getLibcallName(LC) != nullptr;
}
// TODO: Handle atomic memcpy and memcpy.inline
// TODO: Pass ScalarEvolution
bool PreISelIntrinsicLowering::expandMemIntrinsicUses(Function &F) const {
- const TargetLowering *TLI = TM.getSubtargetImpl(F)->getTargetLowering();
Intrinsic::ID ID = F.getIntrinsicID();
bool Changed = false;
@@ -210,7 +211,8 @@ bool PreISelIntrinsicLowering::expandMemIntrinsicUses(Function &F) const {
Function *ParentFunc = Memcpy->getFunction();
const TargetTransformInfo &TTI = LookupTTI(*ParentFunc);
if (shouldExpandMemIntrinsicWithSize(Memcpy->getLength(), TTI)) {
- if (UseMemIntrinsicLibFunc && canEmitLibcall(*TLI, RTLIB::MEMCPY))
+ if (UseMemIntrinsicLibFunc &&
+ canEmitLibcall(TM, ParentFunc, RTLIB::MEMCPY))
break;
// TODO: For optsize, emit the loop into a separate function
@@ -226,7 +228,8 @@ bool PreISelIntrinsicLowering::expandMemIntrinsicUses(Function &F) const {
Function *ParentFunc = Memmove->getFunction();
const TargetTransformInfo &TTI = LookupTTI(*ParentFunc);
if (shouldExpandMemIntrinsicWithSize(Memmove->getLength(), TTI)) {
- if (UseMemIntrinsicLibFunc && canEmitLibcall(*TLI, RTLIB::MEMMOVE))
+ if (UseMemIntrinsicLibFunc &&
+ canEmitLibcall(TM, ParentFunc, RTLIB::MEMMOVE))
break;
if (expandMemMoveAsLoop(Memmove, TTI)) {
@@ -242,7 +245,8 @@ bool PreISelIntrinsicLowering::expandMemIntrinsicUses(Function &F) const {
Function *ParentFunc = Memset->getFunction();
const TargetTransformInfo &TTI = LookupTTI(*ParentFunc);
if (shouldExpandMemIntrinsicWithSize(Memset->getLength(), TTI)) {
- if (UseMemIntrinsicLibFunc && canEmitLibcall(*TLI, RTLIB::MEMSET))
+ if (UseMemIntrinsicLibFunc &&
+ canEmitLibcall(TM, ParentFunc, RTLIB::MEMSET))
break;
expandMemSetAsLoop(Memset);
More information about the llvm-branch-commits
mailing list