Skip to content

Commit 27a84db

Browse files
committed
Pass CodeGenOptLevel to MachineSMEABI pass (part of #149065)
Change-Id: Idef5b1e2a45585f97897fc11c4f237996edb7c8b
1 parent 8cf43ae commit 27a84db

File tree

3 files changed

+12
-6
lines changed

3 files changed

+12
-6
lines changed

llvm/lib/Target/AArch64/AArch64.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ FunctionPass *createAArch64CleanupLocalDynamicTLSPass();
6060
FunctionPass *createAArch64CollectLOHPass();
6161
FunctionPass *createSMEABIPass();
6262
FunctionPass *createSMEPeepholeOptPass();
63-
FunctionPass *createMachineSMEABIPass();
63+
FunctionPass *createMachineSMEABIPass(CodeGenOptLevel);
6464
ModulePass *createSVEIntrinsicOptsPass();
6565
InstructionSelector *
6666
createAArch64InstructionSelector(const AArch64TargetMachine &,

llvm/lib/Target/AArch64/AArch64TargetMachine.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -764,8 +764,8 @@ bool AArch64PassConfig::addGlobalInstructionSelect() {
764764
}
765765

766766
void AArch64PassConfig::addMachineSSAOptimization() {
767-
if (EnableNewSMEABILowering && TM->getOptLevel() != CodeGenOptLevel::None)
768-
addPass(createMachineSMEABIPass());
767+
if (TM->getOptLevel() != CodeGenOptLevel::None && EnableNewSMEABILowering)
768+
addPass(createMachineSMEABIPass(TM->getOptLevel()));
769769

770770
if (TM->getOptLevel() != CodeGenOptLevel::None && EnableSMEPeepholeOpt)
771771
addPass(createSMEPeepholeOptPass());
@@ -798,7 +798,7 @@ bool AArch64PassConfig::addILPOpts() {
798798

799799
void AArch64PassConfig::addPreRegAlloc() {
800800
if (TM->getOptLevel() == CodeGenOptLevel::None && EnableNewSMEABILowering)
801-
addPass(createMachineSMEABIPass());
801+
addPass(createMachineSMEABIPass(CodeGenOptLevel::None));
802802

803803
// Change dead register definitions to refer to the zero register.
804804
if (TM->getOptLevel() != CodeGenOptLevel::None &&

llvm/lib/Target/AArch64/MachineSMEABIPass.cpp

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -238,7 +238,8 @@ getZAStateBeforeInst(const TargetRegisterInfo &TRI, MachineInstr &MI,
238238
struct MachineSMEABI : public MachineFunctionPass {
239239
inline static char ID = 0;
240240

241-
MachineSMEABI() : MachineFunctionPass(ID) {}
241+
MachineSMEABI(CodeGenOptLevel OptLevel = CodeGenOptLevel::Default)
242+
: MachineFunctionPass(ID), OptLevel(OptLevel) {}
242243

243244
bool runOnMachineFunction(MachineFunction &MF) override;
244245

@@ -329,12 +330,15 @@ struct MachineSMEABI : public MachineFunctionPass {
329330
MachineBasicBlock::iterator MBBI, DebugLoc DL);
330331

331332
private:
333+
CodeGenOptLevel OptLevel = CodeGenOptLevel::Default;
334+
332335
MachineFunction *MF = nullptr;
333336
const AArch64Subtarget *Subtarget = nullptr;
334337
const AArch64RegisterInfo *TRI = nullptr;
335338
const AArch64FunctionInfo *AFI = nullptr;
336339
const TargetInstrInfo *TII = nullptr;
337340
MachineRegisterInfo *MRI = nullptr;
341+
MachineLoopInfo *MLI = nullptr;
338342
};
339343

340344
FunctionInfo MachineSMEABI::collectNeededZAStates(SMEAttrs SMEFnAttrs) {
@@ -877,4 +881,6 @@ bool MachineSMEABI::runOnMachineFunction(MachineFunction &MF) {
877881
return true;
878882
}
879883

880-
FunctionPass *llvm::createMachineSMEABIPass() { return new MachineSMEABI(); }
884+
FunctionPass *llvm::createMachineSMEABIPass(CodeGenOptLevel OptLevel) {
885+
return new MachineSMEABI(OptLevel);
886+
}

0 commit comments

Comments
 (0)