diff options
author | Akshat Oke <Akshat.Oke@amd.com> | 2025-03-03 11:26:17 +0530 |
---|---|---|
committer | GitHub <noreply@github.com> | 2025-03-03 11:26:17 +0530 |
commit | 69c8312c0ab30e0906a374ecfc88c60ea7ffe5a4 (patch) | |
tree | 029f2d94f54d7c00b92dc5794c2e3dbc6a4f7cae /llvm/lib | |
parent | e11867039f0806bdfebeb33bb71d8ce3ba8ee33d (diff) | |
download | llvm-69c8312c0ab30e0906a374ecfc88c60ea7ffe5a4.zip llvm-69c8312c0ab30e0906a374ecfc88c60ea7ffe5a4.tar.gz llvm-69c8312c0ab30e0906a374ecfc88c60ea7ffe5a4.tar.bz2 |
[CodeGen][NewPM] Port MachineCycleInfo to NPM (#114745)
Diffstat (limited to 'llvm/lib')
-rw-r--r-- | llvm/lib/CodeGen/CodeGen.cpp | 2 | ||||
-rw-r--r-- | llvm/lib/CodeGen/MachineCycleAnalysis.cpp | 36 | ||||
-rw-r--r-- | llvm/lib/Passes/PassBuilder.cpp | 1 |
3 files changed, 29 insertions, 10 deletions
diff --git a/llvm/lib/CodeGen/CodeGen.cpp b/llvm/lib/CodeGen/CodeGen.cpp index 6311ec2..96db2dc 100644 --- a/llvm/lib/CodeGen/CodeGen.cpp +++ b/llvm/lib/CodeGen/CodeGen.cpp @@ -78,7 +78,7 @@ void llvm::initializeCodeGen(PassRegistry &Registry) { initializeMachineCSELegacyPass(Registry); initializeMachineCombinerPass(Registry); initializeMachineCopyPropagationLegacyPass(Registry); - initializeMachineCycleInfoPrinterPassPass(Registry); + initializeMachineCycleInfoPrinterLegacyPass(Registry); initializeMachineCycleInfoWrapperPassPass(Registry); initializeMachineDominatorTreeWrapperPassPass(Registry); initializeMachineFunctionPrinterPassPass(Registry); diff --git a/llvm/lib/CodeGen/MachineCycleAnalysis.cpp b/llvm/lib/CodeGen/MachineCycleAnalysis.cpp index 57f7a09..33a5b66 100644 --- a/llvm/lib/CodeGen/MachineCycleAnalysis.cpp +++ b/llvm/lib/CodeGen/MachineCycleAnalysis.cpp @@ -54,43 +54,61 @@ void MachineCycleInfoWrapperPass::releaseMemory() { F = nullptr; } +AnalysisKey MachineCycleAnalysis::Key; + +MachineCycleInfo +MachineCycleAnalysis::run(MachineFunction &MF, + MachineFunctionAnalysisManager &MFAM) { + MachineCycleInfo MCI; + MCI.compute(MF); + return MCI; +} + namespace { -class MachineCycleInfoPrinterPass : public MachineFunctionPass { +class MachineCycleInfoPrinterLegacy : public MachineFunctionPass { public: static char ID; - MachineCycleInfoPrinterPass(); + MachineCycleInfoPrinterLegacy(); bool runOnMachineFunction(MachineFunction &F) override; void getAnalysisUsage(AnalysisUsage &AU) const override; }; } // namespace -char MachineCycleInfoPrinterPass::ID = 0; +char MachineCycleInfoPrinterLegacy::ID = 0; -MachineCycleInfoPrinterPass::MachineCycleInfoPrinterPass() +MachineCycleInfoPrinterLegacy::MachineCycleInfoPrinterLegacy() : MachineFunctionPass(ID) { - initializeMachineCycleInfoPrinterPassPass(*PassRegistry::getPassRegistry()); + initializeMachineCycleInfoPrinterLegacyPass(*PassRegistry::getPassRegistry()); } -INITIALIZE_PASS_BEGIN(MachineCycleInfoPrinterPass, "print-machine-cycles", +INITIALIZE_PASS_BEGIN(MachineCycleInfoPrinterLegacy, "print-machine-cycles", "Print Machine Cycle Info Analysis", true, true) INITIALIZE_PASS_DEPENDENCY(MachineCycleInfoWrapperPass) -INITIALIZE_PASS_END(MachineCycleInfoPrinterPass, "print-machine-cycles", +INITIALIZE_PASS_END(MachineCycleInfoPrinterLegacy, "print-machine-cycles", "Print Machine Cycle Info Analysis", true, true) -void MachineCycleInfoPrinterPass::getAnalysisUsage(AnalysisUsage &AU) const { +void MachineCycleInfoPrinterLegacy::getAnalysisUsage(AnalysisUsage &AU) const { AU.setPreservesAll(); AU.addRequired<MachineCycleInfoWrapperPass>(); MachineFunctionPass::getAnalysisUsage(AU); } -bool MachineCycleInfoPrinterPass::runOnMachineFunction(MachineFunction &F) { +bool MachineCycleInfoPrinterLegacy::runOnMachineFunction(MachineFunction &F) { auto &CI = getAnalysis<MachineCycleInfoWrapperPass>(); CI.print(errs()); return false; } +PreservedAnalyses +MachineCycleInfoPrinterPass::run(MachineFunction &MF, + MachineFunctionAnalysisManager &MFAM) { + auto &MCI = MFAM.getResult<MachineCycleAnalysis>(MF); + MCI.print(OS); + return PreservedAnalyses::all(); +} + bool llvm::isCycleInvariant(const MachineCycle *Cycle, MachineInstr &I) { MachineFunction *MF = I.getParent()->getParent(); MachineRegisterInfo *MRI = &MF->getRegInfo(); diff --git a/llvm/lib/Passes/PassBuilder.cpp b/llvm/lib/Passes/PassBuilder.cpp index ba8790a..a0fb2bc 100644 --- a/llvm/lib/Passes/PassBuilder.cpp +++ b/llvm/lib/Passes/PassBuilder.cpp @@ -111,6 +111,7 @@ #include "llvm/CodeGen/MachineBranchProbabilityInfo.h" #include "llvm/CodeGen/MachineCSE.h" #include "llvm/CodeGen/MachineCopyPropagation.h" +#include "llvm/CodeGen/MachineCycleAnalysis.h" #include "llvm/CodeGen/MachineDominators.h" #include "llvm/CodeGen/MachineFunctionAnalysis.h" #include "llvm/CodeGen/MachineLICM.h" |