[llvm] [RISCV][GISEL] Do not initialize GlobalISel objects unless needed (PR #98233)
Michael Maitland via llvm-commits
llvm-commits at lists.llvm.org
Tue Jul 9 15:48:21 PDT 2024
================
@@ -97,29 +97,34 @@ RISCVSubtarget::RISCVSubtarget(const Triple &TT, StringRef CPU,
RVVVectorBitsMin(RVVVectorBitsMin), RVVVectorBitsMax(RVVVectorBitsMax),
FrameLowering(
initializeSubtargetDependencies(TT, CPU, TuneCPU, FS, ABIName)),
- InstrInfo(*this), RegInfo(getHwMode()), TLInfo(TM, *this) {
- CallLoweringInfo.reset(new RISCVCallLowering(*getTargetLowering()));
- Legalizer.reset(new RISCVLegalizerInfo(*this));
-
- auto *RBI = new RISCVRegisterBankInfo(getHwMode());
- RegBankInfo.reset(RBI);
- InstSelector.reset(createRISCVInstructionSelector(
- *static_cast<const RISCVTargetMachine *>(&TM), *this, *RBI));
-}
+ InstrInfo(*this), RegInfo(getHwMode()), TLInfo(TM, *this) {}
const CallLowering *RISCVSubtarget::getCallLowering() const {
+ if (!CallLoweringInfo)
+ CallLoweringInfo.reset(new RISCVCallLowering(*getTargetLowering()));
return CallLoweringInfo.get();
}
InstructionSelector *RISCVSubtarget::getInstructionSelector() const {
+ if (!InstSelector) {
+ if (!RegBankInfo)
----------------
michaelmaitland wrote:
getRegBankInfo returns `const` object.
https://github.com/llvm/llvm-project/pull/98233
More information about the llvm-commits
mailing list