https://github.com/optimisan created https://github.com/llvm/llvm-project/pull/118778
None >From 949e14d75114c84a07d2494d7c5cd1443cfa36fb Mon Sep 17 00:00:00 2001 From: Akshat Oke <akshat....@amd.com> Date: Thu, 5 Dec 2024 09:44:25 +0000 Subject: [PATCH] [CodeGen][NewPM] Port LiveStacks analysis to NPM --- llvm/include/llvm/CodeGen/LiveStacks.h | 37 ++++++++++++++---- llvm/include/llvm/InitializePasses.h | 2 +- .../llvm/Passes/MachinePassRegistry.def | 2 +- llvm/lib/CodeGen/CodeGen.cpp | 2 +- llvm/lib/CodeGen/InlineSpiller.cpp | 4 +- llvm/lib/CodeGen/LiveStacks.cpp | 38 ++++++++++++++----- llvm/lib/CodeGen/MachineVerifier.cpp | 5 ++- llvm/lib/CodeGen/RegAllocBasic.cpp | 6 +-- llvm/lib/CodeGen/RegAllocGreedy.cpp | 6 +-- llvm/lib/CodeGen/RegAllocPBQP.cpp | 6 +-- llvm/lib/CodeGen/StackSlotColoring.cpp | 6 +-- llvm/lib/CodeGen/VirtRegMap.cpp | 6 +-- llvm/lib/Passes/PassBuilder.cpp | 1 + .../AMDGPU/AMDGPUMarkLastScratchLoad.cpp | 6 +-- .../LoongArchDeadRegisterDefinitions.cpp | 2 +- .../RISCV/RISCVDeadRegisterDefinitions.cpp | 2 +- llvm/lib/Target/RISCV/RISCVInsertVSETVLI.cpp | 2 +- 17 files changed, 89 insertions(+), 44 deletions(-) diff --git a/llvm/include/llvm/CodeGen/LiveStacks.h b/llvm/include/llvm/CodeGen/LiveStacks.h index 2edc2985f0ee66..261b8a365a3d0a 100644 --- a/llvm/include/llvm/CodeGen/LiveStacks.h +++ b/llvm/include/llvm/CodeGen/LiveStacks.h @@ -17,6 +17,7 @@ #include "llvm/CodeGen/LiveInterval.h" #include "llvm/CodeGen/MachineFunctionPass.h" +#include "llvm/IR/PassManager.h" #include "llvm/InitializePasses.h" #include "llvm/PassRegistry.h" #include <cassert> @@ -32,7 +33,7 @@ class raw_ostream; class TargetRegisterClass; class TargetRegisterInfo; -class LiveStacks : public MachineFunctionPass { +class LiveStacks { const TargetRegisterInfo *TRI = nullptr; /// Special pool allocator for VNInfo's (LiveInterval val#). @@ -47,12 +48,6 @@ class LiveStacks : public MachineFunctionPass { std::map<int, const TargetRegisterClass *> S2RCMap; public: - static char ID; // Pass identification, replacement for typeid - - LiveStacks() : MachineFunctionPass(ID) { - initializeLiveStacksPass(*PassRegistry::getPassRegistry()); - } - using iterator = SS2IntervalMap::iterator; using const_iterator = SS2IntervalMap::const_iterator; @@ -92,6 +87,25 @@ class LiveStacks : public MachineFunctionPass { VNInfo::Allocator &getVNInfoAllocator() { return VNInfoAllocator; } + void releaseMemory(); + /// init - analysis entry point + void init(MachineFunction &MF); + void print(raw_ostream &O, const Module *M = nullptr) const; +}; + +class LiveStacksWrapperLegacy : public MachineFunctionPass { + LiveStacks Impl; + +public: + static char ID; // Pass identification, replacement for typeid + + LiveStacksWrapperLegacy() : MachineFunctionPass(ID) { + initializeLiveStacksWrapperLegacyPass(*PassRegistry::getPassRegistry()); + } + + LiveStacks &getLS() { return Impl; } + const LiveStacks &getLS() const { return Impl; } + void getAnalysisUsage(AnalysisUsage &AU) const override; void releaseMemory() override; @@ -102,6 +116,15 @@ class LiveStacks : public MachineFunctionPass { void print(raw_ostream &O, const Module * = nullptr) const override; }; +class LiveStacksAnalysis : public AnalysisInfoMixin<LiveStacksAnalysis> { + static AnalysisKey Key; + friend AnalysisInfoMixin<LiveStacksAnalysis>; + +public: + using Result = LiveStacks; + + LiveStacks run(MachineFunction &MF, MachineFunctionAnalysisManager &); +}; } // end namespace llvm #endif diff --git a/llvm/include/llvm/InitializePasses.h b/llvm/include/llvm/InitializePasses.h index 1d690165134ca2..87faf111a30cc9 100644 --- a/llvm/include/llvm/InitializePasses.h +++ b/llvm/include/llvm/InitializePasses.h @@ -158,7 +158,7 @@ void initializeLiveDebugVariablesWrapperLegacyPass(PassRegistry &); void initializeLiveIntervalsWrapperPassPass(PassRegistry &); void initializeLiveRangeShrinkPass(PassRegistry &); void initializeLiveRegMatrixWrapperLegacyPass(PassRegistry &); -void initializeLiveStacksPass(PassRegistry &); +void initializeLiveStacksWrapperLegacyPass(PassRegistry &); void initializeLiveVariablesWrapperPassPass(PassRegistry &); void initializeLoadStoreOptPass(PassRegistry &); void initializeLoadStoreVectorizerLegacyPassPass(PassRegistry &); diff --git a/llvm/include/llvm/Passes/MachinePassRegistry.def b/llvm/include/llvm/Passes/MachinePassRegistry.def index 88f57568645eb4..74c67ab7f34a68 100644 --- a/llvm/include/llvm/Passes/MachinePassRegistry.def +++ b/llvm/include/llvm/Passes/MachinePassRegistry.def @@ -118,7 +118,7 @@ MACHINE_FUNCTION_ANALYSIS("regalloc-priority", RegAllocPriorityAdvisorAnalysis() MACHINE_FUNCTION_ANALYSIS("slot-indexes", SlotIndexesAnalysis()) MACHINE_FUNCTION_ANALYSIS("spill-code-placement", SpillPlacementAnalysis()) MACHINE_FUNCTION_ANALYSIS("virtregmap", VirtRegMapAnalysis()) -// MACHINE_FUNCTION_ANALYSIS("live-stacks", LiveStacksPass()) +MACHINE_FUNCTION_ANALYSIS("live-stacks", LiveStacksAnalysis()) // MACHINE_FUNCTION_ANALYSIS("lazy-machine-bfi", // LazyMachineBlockFrequencyInfoAnalysis()) // MACHINE_FUNCTION_ANALYSIS("machine-loops", MachineLoopInfoAnalysis()) diff --git a/llvm/lib/CodeGen/CodeGen.cpp b/llvm/lib/CodeGen/CodeGen.cpp index 59428818c1ee7c..8efe540770913a 100644 --- a/llvm/lib/CodeGen/CodeGen.cpp +++ b/llvm/lib/CodeGen/CodeGen.cpp @@ -62,7 +62,7 @@ void llvm::initializeCodeGen(PassRegistry &Registry) { initializeLiveDebugVariablesWrapperLegacyPass(Registry); initializeLiveIntervalsWrapperPassPass(Registry); initializeLiveRangeShrinkPass(Registry); - initializeLiveStacksPass(Registry); + initializeLiveStacksWrapperLegacyPass(Registry); initializeLiveVariablesWrapperPassPass(Registry); initializeLocalStackSlotPassPass(Registry); initializeLowerGlobalDtorsLegacyPassPass(Registry); diff --git a/llvm/lib/CodeGen/InlineSpiller.cpp b/llvm/lib/CodeGen/InlineSpiller.cpp index e8f7c6850a507e..64f290f5930a1b 100644 --- a/llvm/lib/CodeGen/InlineSpiller.cpp +++ b/llvm/lib/CodeGen/InlineSpiller.cpp @@ -131,7 +131,7 @@ class HoistSpillHelper : private LiveRangeEdit::Delegate { HoistSpillHelper(MachineFunctionPass &pass, MachineFunction &mf, VirtRegMap &vrm) : MF(mf), LIS(pass.getAnalysis<LiveIntervalsWrapperPass>().getLIS()), - LSS(pass.getAnalysis<LiveStacks>()), + LSS(pass.getAnalysis<LiveStacksWrapperLegacy>().getLS()), MDT(pass.getAnalysis<MachineDominatorTreeWrapperPass>().getDomTree()), VRM(vrm), MRI(mf.getRegInfo()), TII(*mf.getSubtarget().getInstrInfo()), TRI(*mf.getSubtarget().getRegisterInfo()), @@ -193,7 +193,7 @@ class InlineSpiller : public Spiller { InlineSpiller(MachineFunctionPass &Pass, MachineFunction &MF, VirtRegMap &VRM, VirtRegAuxInfo &VRAI) : MF(MF), LIS(Pass.getAnalysis<LiveIntervalsWrapperPass>().getLIS()), - LSS(Pass.getAnalysis<LiveStacks>()), + LSS(Pass.getAnalysis<LiveStacksWrapperLegacy>().getLS()), MDT(Pass.getAnalysis<MachineDominatorTreeWrapperPass>().getDomTree()), VRM(VRM), MRI(MF.getRegInfo()), TII(*MF.getSubtarget().getInstrInfo()), TRI(*MF.getSubtarget().getRegisterInfo()), diff --git a/llvm/lib/CodeGen/LiveStacks.cpp b/llvm/lib/CodeGen/LiveStacks.cpp index 6228a4dd2ad3bc..49fe5d6b23452e 100644 --- a/llvm/lib/CodeGen/LiveStacks.cpp +++ b/llvm/lib/CodeGen/LiveStacks.cpp @@ -19,16 +19,16 @@ using namespace llvm; #define DEBUG_TYPE "livestacks" -char LiveStacks::ID = 0; -INITIALIZE_PASS_BEGIN(LiveStacks, DEBUG_TYPE, - "Live Stack Slot Analysis", false, false) +char LiveStacksWrapperLegacy::ID = 0; +INITIALIZE_PASS_BEGIN(LiveStacksWrapperLegacy, DEBUG_TYPE, + "Live Stack Slot Analysis", false, false) INITIALIZE_PASS_DEPENDENCY(SlotIndexesWrapperPass) -INITIALIZE_PASS_END(LiveStacks, DEBUG_TYPE, - "Live Stack Slot Analysis", false, false) +INITIALIZE_PASS_END(LiveStacksWrapperLegacy, DEBUG_TYPE, + "Live Stack Slot Analysis", false, false) -char &llvm::LiveStacksID = LiveStacks::ID; +char &llvm::LiveStacksID = LiveStacksWrapperLegacy::ID; -void LiveStacks::getAnalysisUsage(AnalysisUsage &AU) const { +void LiveStacksWrapperLegacy::getAnalysisUsage(AnalysisUsage &AU) const { AU.setPreservesAll(); AU.addPreserved<SlotIndexesWrapperPass>(); AU.addRequiredTransitive<SlotIndexesWrapperPass>(); @@ -42,11 +42,10 @@ void LiveStacks::releaseMemory() { S2RCMap.clear(); } -bool LiveStacks::runOnMachineFunction(MachineFunction &MF) { +void LiveStacks::init(MachineFunction &MF) { TRI = MF.getSubtarget().getRegisterInfo(); // FIXME: No analysis is being done right now. We are relying on the // register allocators to provide the information. - return false; } LiveInterval & @@ -68,6 +67,27 @@ LiveStacks::getOrCreateInterval(int Slot, const TargetRegisterClass *RC) { return I->second; } +AnalysisKey LiveStacksAnalysis::Key; + +LiveStacks LiveStacksAnalysis::run(MachineFunction &MF, + MachineFunctionAnalysisManager &) { + LiveStacks Impl; + Impl.init(MF); + return Impl; +} + +bool LiveStacksWrapperLegacy::runOnMachineFunction(MachineFunction &MF) { + Impl = LiveStacks(); + Impl.init(MF); + return false; +} + +void LiveStacksWrapperLegacy::releaseMemory() { Impl = LiveStacks(); } + +void LiveStacksWrapperLegacy::print(raw_ostream &OS, const Module *) const { + Impl.print(OS); +} + /// print - Implement the dump method. void LiveStacks::print(raw_ostream &OS, const Module*) const { diff --git a/llvm/lib/CodeGen/MachineVerifier.cpp b/llvm/lib/CodeGen/MachineVerifier.cpp index 8e64e4055665ce..fb4d96fdad0a5e 100644 --- a/llvm/lib/CodeGen/MachineVerifier.cpp +++ b/llvm/lib/CodeGen/MachineVerifier.cpp @@ -369,7 +369,7 @@ struct MachineVerifierLegacyPass : public MachineFunctionPass { } void getAnalysisUsage(AnalysisUsage &AU) const override { - AU.addUsedIfAvailable<LiveStacks>(); + AU.addUsedIfAvailable<LiveStacksWrapperLegacy>(); AU.addUsedIfAvailable<LiveVariablesWrapperPass>(); AU.addUsedIfAvailable<SlotIndexesWrapperPass>(); AU.addUsedIfAvailable<LiveIntervalsWrapperPass>(); @@ -491,7 +491,8 @@ bool MachineVerifier::verify(const MachineFunction &MF) { auto *LVWrapper = PASS->getAnalysisIfAvailable<LiveVariablesWrapperPass>(); if (!LiveInts) LiveVars = LVWrapper ? &LVWrapper->getLV() : nullptr; - LiveStks = PASS->getAnalysisIfAvailable<LiveStacks>(); + auto *LSWrapper = PASS->getAnalysisIfAvailable<LiveStacksWrapperLegacy>(); + LiveStks = LSWrapper ? &LSWrapper->getLS() : nullptr; auto *SIWrapper = PASS->getAnalysisIfAvailable<SlotIndexesWrapperPass>(); Indexes = SIWrapper ? &SIWrapper->getSI() : nullptr; } diff --git a/llvm/lib/CodeGen/RegAllocBasic.cpp b/llvm/lib/CodeGen/RegAllocBasic.cpp index 7ee24c960dbe0c..c05aa1e40e4779 100644 --- a/llvm/lib/CodeGen/RegAllocBasic.cpp +++ b/llvm/lib/CodeGen/RegAllocBasic.cpp @@ -135,7 +135,7 @@ INITIALIZE_PASS_DEPENDENCY(SlotIndexesWrapperPass) INITIALIZE_PASS_DEPENDENCY(LiveIntervalsWrapperPass) INITIALIZE_PASS_DEPENDENCY(RegisterCoalescer) INITIALIZE_PASS_DEPENDENCY(MachineScheduler) -INITIALIZE_PASS_DEPENDENCY(LiveStacks) +INITIALIZE_PASS_DEPENDENCY(LiveStacksWrapperLegacy) INITIALIZE_PASS_DEPENDENCY(AAResultsWrapperPass) INITIALIZE_PASS_DEPENDENCY(MachineDominatorTreeWrapperPass) INITIALIZE_PASS_DEPENDENCY(MachineLoopInfoWrapperPass) @@ -182,8 +182,8 @@ void RABasic::getAnalysisUsage(AnalysisUsage &AU) const { AU.addPreserved<SlotIndexesWrapperPass>(); AU.addRequired<LiveDebugVariablesWrapperLegacy>(); AU.addPreserved<LiveDebugVariablesWrapperLegacy>(); - AU.addRequired<LiveStacks>(); - AU.addPreserved<LiveStacks>(); + AU.addRequired<LiveStacksWrapperLegacy>(); + AU.addPreserved<LiveStacksWrapperLegacy>(); AU.addRequired<ProfileSummaryInfoWrapperPass>(); AU.addRequired<MachineBlockFrequencyInfoWrapperPass>(); AU.addPreserved<MachineBlockFrequencyInfoWrapperPass>(); diff --git a/llvm/lib/CodeGen/RegAllocGreedy.cpp b/llvm/lib/CodeGen/RegAllocGreedy.cpp index f97525a8420125..d3a7f4cb6f1206 100644 --- a/llvm/lib/CodeGen/RegAllocGreedy.cpp +++ b/llvm/lib/CodeGen/RegAllocGreedy.cpp @@ -156,7 +156,7 @@ INITIALIZE_PASS_DEPENDENCY(SlotIndexesWrapperPass) INITIALIZE_PASS_DEPENDENCY(LiveIntervalsWrapperPass) INITIALIZE_PASS_DEPENDENCY(RegisterCoalescer) INITIALIZE_PASS_DEPENDENCY(MachineScheduler) -INITIALIZE_PASS_DEPENDENCY(LiveStacks) +INITIALIZE_PASS_DEPENDENCY(LiveStacksWrapperLegacy) INITIALIZE_PASS_DEPENDENCY(MachineDominatorTreeWrapperPass) INITIALIZE_PASS_DEPENDENCY(MachineLoopInfoWrapperPass) INITIALIZE_PASS_DEPENDENCY(VirtRegMapWrapperLegacy) @@ -206,8 +206,8 @@ void RAGreedy::getAnalysisUsage(AnalysisUsage &AU) const { AU.addPreserved<SlotIndexesWrapperPass>(); AU.addRequired<LiveDebugVariablesWrapperLegacy>(); AU.addPreserved<LiveDebugVariablesWrapperLegacy>(); - AU.addRequired<LiveStacks>(); - AU.addPreserved<LiveStacks>(); + AU.addRequired<LiveStacksWrapperLegacy>(); + AU.addPreserved<LiveStacksWrapperLegacy>(); AU.addRequired<MachineDominatorTreeWrapperPass>(); AU.addPreserved<MachineDominatorTreeWrapperPass>(); AU.addRequired<MachineLoopInfoWrapperPass>(); diff --git a/llvm/lib/CodeGen/RegAllocPBQP.cpp b/llvm/lib/CodeGen/RegAllocPBQP.cpp index 261e93add7d88c..696c312e4ba00a 100644 --- a/llvm/lib/CodeGen/RegAllocPBQP.cpp +++ b/llvm/lib/CodeGen/RegAllocPBQP.cpp @@ -121,7 +121,7 @@ class RegAllocPBQP : public MachineFunctionPass { : MachineFunctionPass(ID), customPassID(cPassID) { initializeSlotIndexesWrapperPassPass(*PassRegistry::getPassRegistry()); initializeLiveIntervalsWrapperPassPass(*PassRegistry::getPassRegistry()); - initializeLiveStacksPass(*PassRegistry::getPassRegistry()); + initializeLiveStacksWrapperLegacyPass(*PassRegistry::getPassRegistry()); initializeVirtRegMapWrapperLegacyPass(*PassRegistry::getPassRegistry()); } @@ -550,8 +550,8 @@ void RegAllocPBQP::getAnalysisUsage(AnalysisUsage &au) const { //au.addRequiredID(SplitCriticalEdgesID); if (customPassID) au.addRequiredID(*customPassID); - au.addRequired<LiveStacks>(); - au.addPreserved<LiveStacks>(); + au.addRequired<LiveStacksWrapperLegacy>(); + au.addPreserved<LiveStacksWrapperLegacy>(); au.addRequired<MachineBlockFrequencyInfoWrapperPass>(); au.addPreserved<MachineBlockFrequencyInfoWrapperPass>(); au.addRequired<MachineLoopInfoWrapperPass>(); diff --git a/llvm/lib/CodeGen/StackSlotColoring.cpp b/llvm/lib/CodeGen/StackSlotColoring.cpp index cdc530621de621..4dc5dc87ba3fc4 100644 --- a/llvm/lib/CodeGen/StackSlotColoring.cpp +++ b/llvm/lib/CodeGen/StackSlotColoring.cpp @@ -149,7 +149,7 @@ namespace { AU.setPreservesCFG(); AU.addRequired<SlotIndexesWrapperPass>(); AU.addPreserved<SlotIndexesWrapperPass>(); - AU.addRequired<LiveStacks>(); + AU.addRequired<LiveStacksWrapperLegacy>(); AU.addRequired<MachineBlockFrequencyInfoWrapperPass>(); AU.addPreserved<MachineBlockFrequencyInfoWrapperPass>(); AU.addPreservedID(MachineDominatorsID); @@ -185,7 +185,7 @@ char &llvm::StackSlotColoringID = StackSlotColoring::ID; INITIALIZE_PASS_BEGIN(StackSlotColoring, DEBUG_TYPE, "Stack Slot Coloring", false, false) INITIALIZE_PASS_DEPENDENCY(SlotIndexesWrapperPass) -INITIALIZE_PASS_DEPENDENCY(LiveStacks) +INITIALIZE_PASS_DEPENDENCY(LiveStacksWrapperLegacy) INITIALIZE_PASS_DEPENDENCY(MachineLoopInfoWrapperPass) INITIALIZE_PASS_END(StackSlotColoring, DEBUG_TYPE, "Stack Slot Coloring", false, false) @@ -522,7 +522,7 @@ bool StackSlotColoring::runOnMachineFunction(MachineFunction &MF) { MFI = &MF.getFrameInfo(); TII = MF.getSubtarget().getInstrInfo(); - LS = &getAnalysis<LiveStacks>(); + LS = &getAnalysis<LiveStacksWrapperLegacy>().getLS(); MBFI = &getAnalysis<MachineBlockFrequencyInfoWrapperPass>().getMBFI(); Indexes = &getAnalysis<SlotIndexesWrapperPass>().getSI(); diff --git a/llvm/lib/CodeGen/VirtRegMap.cpp b/llvm/lib/CodeGen/VirtRegMap.cpp index 2084e68c16e292..1352102a93d01b 100644 --- a/llvm/lib/CodeGen/VirtRegMap.cpp +++ b/llvm/lib/CodeGen/VirtRegMap.cpp @@ -253,7 +253,7 @@ INITIALIZE_PASS_DEPENDENCY(SlotIndexesWrapperPass) INITIALIZE_PASS_DEPENDENCY(LiveIntervalsWrapperPass) INITIALIZE_PASS_DEPENDENCY(LiveDebugVariablesWrapperLegacy) INITIALIZE_PASS_DEPENDENCY(LiveRegMatrixWrapperLegacy) -INITIALIZE_PASS_DEPENDENCY(LiveStacks) +INITIALIZE_PASS_DEPENDENCY(LiveStacksWrapperLegacy) INITIALIZE_PASS_DEPENDENCY(VirtRegMapWrapperLegacy) INITIALIZE_PASS_END(VirtRegRewriter, "virtregrewriter", "Virtual Register Rewriter", false, false) @@ -265,8 +265,8 @@ void VirtRegRewriter::getAnalysisUsage(AnalysisUsage &AU) const { AU.addRequired<SlotIndexesWrapperPass>(); AU.addPreserved<SlotIndexesWrapperPass>(); AU.addRequired<LiveDebugVariablesWrapperLegacy>(); - AU.addRequired<LiveStacks>(); - AU.addPreserved<LiveStacks>(); + AU.addRequired<LiveStacksWrapperLegacy>(); + AU.addPreserved<LiveStacksWrapperLegacy>(); AU.addRequired<VirtRegMapWrapperLegacy>(); AU.addRequired<LiveRegMatrixWrapperLegacy>(); diff --git a/llvm/lib/Passes/PassBuilder.cpp b/llvm/lib/Passes/PassBuilder.cpp index 9c28bf1ce57ac3..e1aa1497891506 100644 --- a/llvm/lib/Passes/PassBuilder.cpp +++ b/llvm/lib/Passes/PassBuilder.cpp @@ -101,6 +101,7 @@ #include "llvm/CodeGen/LiveDebugVariables.h" #include "llvm/CodeGen/LiveIntervals.h" #include "llvm/CodeGen/LiveRegMatrix.h" +#include "llvm/CodeGen/LiveStacks.h" #include "llvm/CodeGen/LiveVariables.h" #include "llvm/CodeGen/LocalStackSlotAllocation.h" #include "llvm/CodeGen/LowerEmuTLS.h" diff --git a/llvm/lib/Target/AMDGPU/AMDGPUMarkLastScratchLoad.cpp b/llvm/lib/Target/AMDGPU/AMDGPUMarkLastScratchLoad.cpp index 359cd7ad6a7144..8eef0c58921090 100644 --- a/llvm/lib/Target/AMDGPU/AMDGPUMarkLastScratchLoad.cpp +++ b/llvm/lib/Target/AMDGPU/AMDGPUMarkLastScratchLoad.cpp @@ -44,7 +44,7 @@ class AMDGPUMarkLastScratchLoad : public MachineFunctionPass { void getAnalysisUsage(AnalysisUsage &AU) const override { AU.addRequired<SlotIndexesWrapperPass>(); AU.addRequired<LiveIntervalsWrapperPass>(); - AU.addRequired<LiveStacks>(); + AU.addRequired<LiveStacksWrapperLegacy>(); AU.setPreservesAll(); MachineFunctionPass::getAnalysisUsage(AU); } @@ -64,7 +64,7 @@ bool AMDGPUMarkLastScratchLoad::runOnMachineFunction(MachineFunction &MF) { if (ST.getGeneration() < AMDGPUSubtarget::GFX12) return false; - LS = &getAnalysis<LiveStacks>(); + LS = &getAnalysis<LiveStacksWrapperLegacy>().getLS(); LIS = &getAnalysis<LiveIntervalsWrapperPass>().getLIS(); SI = &getAnalysis<SlotIndexesWrapperPass>().getSI(); SII = ST.getInstrInfo(); @@ -137,6 +137,6 @@ char &llvm::AMDGPUMarkLastScratchLoadID = AMDGPUMarkLastScratchLoad::ID; INITIALIZE_PASS_BEGIN(AMDGPUMarkLastScratchLoad, DEBUG_TYPE, "AMDGPU Mark last scratch load", false, false) INITIALIZE_PASS_DEPENDENCY(SlotIndexesWrapperPass) -INITIALIZE_PASS_DEPENDENCY(LiveStacks) +INITIALIZE_PASS_DEPENDENCY(LiveStacksWrapperLegacy) INITIALIZE_PASS_END(AMDGPUMarkLastScratchLoad, DEBUG_TYPE, "AMDGPU Mark last scratch load", false, false) diff --git a/llvm/lib/Target/LoongArch/LoongArchDeadRegisterDefinitions.cpp b/llvm/lib/Target/LoongArch/LoongArchDeadRegisterDefinitions.cpp index d682b7dbe3ce2f..069b181791ac78 100644 --- a/llvm/lib/Target/LoongArch/LoongArchDeadRegisterDefinitions.cpp +++ b/llvm/lib/Target/LoongArch/LoongArchDeadRegisterDefinitions.cpp @@ -38,7 +38,7 @@ class LoongArchDeadRegisterDefinitions : public MachineFunctionPass { AU.addRequired<LiveIntervalsWrapperPass>(); AU.addPreserved<SlotIndexesWrapperPass>(); AU.addPreserved<LiveDebugVariablesWrapperLegacy>(); - AU.addPreserved<LiveStacks>(); + AU.addPreserved<LiveStacksWrapperLegacy>(); MachineFunctionPass::getAnalysisUsage(AU); } diff --git a/llvm/lib/Target/RISCV/RISCVDeadRegisterDefinitions.cpp b/llvm/lib/Target/RISCV/RISCVDeadRegisterDefinitions.cpp index 7bcf3397df97ee..47510ec6b0ea8e 100644 --- a/llvm/lib/Target/RISCV/RISCVDeadRegisterDefinitions.cpp +++ b/llvm/lib/Target/RISCV/RISCVDeadRegisterDefinitions.cpp @@ -38,7 +38,7 @@ class RISCVDeadRegisterDefinitions : public MachineFunctionPass { AU.addRequired<LiveIntervalsWrapperPass>(); AU.addPreserved<SlotIndexesWrapperPass>(); AU.addPreserved<LiveDebugVariablesWrapperLegacy>(); - AU.addPreserved<LiveStacks>(); + AU.addPreserved<LiveStacksWrapperLegacy>(); MachineFunctionPass::getAnalysisUsage(AU); } diff --git a/llvm/lib/Target/RISCV/RISCVInsertVSETVLI.cpp b/llvm/lib/Target/RISCV/RISCVInsertVSETVLI.cpp index 870e393b40411f..e889969294842f 100644 --- a/llvm/lib/Target/RISCV/RISCVInsertVSETVLI.cpp +++ b/llvm/lib/Target/RISCV/RISCVInsertVSETVLI.cpp @@ -890,7 +890,7 @@ class RISCVInsertVSETVLI : public MachineFunctionPass { AU.addPreserved<LiveIntervalsWrapperPass>(); AU.addPreserved<SlotIndexesWrapperPass>(); AU.addPreserved<LiveDebugVariablesWrapperLegacy>(); - AU.addPreserved<LiveStacks>(); + AU.addPreserved<LiveStacksWrapperLegacy>(); MachineFunctionPass::getAnalysisUsage(AU); } _______________________________________________ llvm-branch-commits mailing list llvm-branch-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits