Skip to content

Commit a4837fe

Browse files
authored
[CodeGen] Allow PreISel lowering to run without TM (#102150)
Fixes #101652 after build bot failures where TM in the opt pass builder is nullptr.
1 parent e958456 commit a4837fe

File tree

4 files changed

+11
-9
lines changed

4 files changed

+11
-9
lines changed

llvm/include/llvm/CodeGen/PreISelIntrinsicLowering.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,9 +22,9 @@ class TargetMachine;
2222

2323
struct PreISelIntrinsicLoweringPass
2424
: PassInfoMixin<PreISelIntrinsicLoweringPass> {
25-
const TargetMachine &TM;
25+
const TargetMachine *TM;
2626

27-
PreISelIntrinsicLoweringPass(const TargetMachine &TM) : TM(TM) {}
27+
PreISelIntrinsicLoweringPass(const TargetMachine *TM) : TM(TM) {}
2828
PreservedAnalyses run(Module &M, ModuleAnalysisManager &AM);
2929
};
3030

llvm/include/llvm/Passes/CodeGenPassBuilder.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -628,7 +628,7 @@ void CodeGenPassBuilder<Derived, TargetMachineT>::addISelPasses(
628628
if (TM.useEmulatedTLS())
629629
addPass(LowerEmuTLSPass());
630630

631-
addPass(PreISelIntrinsicLoweringPass(TM));
631+
addPass(PreISelIntrinsicLoweringPass(&TM));
632632

633633
derived().addIRPasses(addPass);
634634
derived().addCodeGenPrepare(addPass);

llvm/lib/CodeGen/PreISelIntrinsicLowering.cpp

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ static cl::opt<int64_t> MemIntrinsicExpandSizeThresholdOpt(
4747
namespace {
4848

4949
struct PreISelIntrinsicLowering {
50-
const TargetMachine &TM;
50+
const TargetMachine *TM;
5151
const function_ref<TargetTransformInfo &(Function &)> LookupTTI;
5252
const function_ref<TargetLibraryInfo &(Function &)> LookupTLI;
5353

@@ -57,7 +57,7 @@ struct PreISelIntrinsicLowering {
5757
const bool UseMemIntrinsicLibFunc;
5858

5959
explicit PreISelIntrinsicLowering(
60-
const TargetMachine &TM_,
60+
const TargetMachine *TM_,
6161
function_ref<TargetTransformInfo &(Function &)> LookupTTI_,
6262
function_ref<TargetLibraryInfo &(Function &)> LookupTLI_,
6363
bool UseMemIntrinsicLibFunc_ = true)
@@ -223,10 +223,12 @@ bool PreISelIntrinsicLowering::shouldExpandMemIntrinsicWithSize(
223223
return SizeVal > Threshold || Threshold == 0;
224224
}
225225

226-
static bool canEmitLibcall(const TargetMachine &TM, Function *F,
226+
static bool canEmitLibcall(const TargetMachine *TM, Function *F,
227227
RTLIB::Libcall LC) {
228228
// TODO: Should this consider the address space of the memcpy?
229-
const TargetLowering *TLI = TM.getSubtargetImpl(*F)->getTargetLowering();
229+
if (!TM)
230+
return true;
231+
const TargetLowering *TLI = TM->getSubtargetImpl(*F)->getTargetLowering();
230232
return TLI->getLibcallName(LC) != nullptr;
231233
}
232234

@@ -464,7 +466,7 @@ class PreISelIntrinsicLoweringLegacyPass : public ModulePass {
464466
return this->getAnalysis<TargetLibraryInfoWrapperPass>().getTLI(F);
465467
};
466468

467-
const auto &TM = getAnalysis<TargetPassConfig>().getTM<TargetMachine>();
469+
const auto *TM = &getAnalysis<TargetPassConfig>().getTM<TargetMachine>();
468470
PreISelIntrinsicLowering Lowering(TM, LookupTTI, LookupTLI);
469471
return Lowering.lowerIntrinsics(M);
470472
}

llvm/lib/Passes/PassRegistry.def

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -104,7 +104,7 @@ MODULE_PASS("pgo-icall-prom", PGOIndirectCallPromotion())
104104
MODULE_PASS("pgo-instr-gen", PGOInstrumentationGen())
105105
MODULE_PASS("pgo-instr-use", PGOInstrumentationUse())
106106
MODULE_PASS("poison-checking", PoisonCheckingPass())
107-
MODULE_PASS("pre-isel-intrinsic-lowering", PreISelIntrinsicLoweringPass(*TM))
107+
MODULE_PASS("pre-isel-intrinsic-lowering", PreISelIntrinsicLoweringPass(TM))
108108
MODULE_PASS("print", PrintModulePass(dbgs()))
109109
MODULE_PASS("print-callgraph", CallGraphPrinterPass(dbgs()))
110110
MODULE_PASS("print-callgraph-sccs", CallGraphSCCsPrinterPass(dbgs()))

0 commit comments

Comments
 (0)