================ @@ -711,28 +726,66 @@ void MachineSinking::FindCycleSinkCandidates( } } -bool MachineSinking::runOnMachineFunction(MachineFunction &MF) { +PreservedAnalyses +MachineSinkingPass::run(MachineFunction &MF, + MachineFunctionAnalysisManager &MFAM) { + MachineSinking Impl(nullptr, &MFAM, EnableSinkAndFold); + bool Changed = Impl.run(MF); + if (!Changed) + return PreservedAnalyses::all(); + auto PA = getMachineFunctionPassPreservedAnalyses(); + PA.preserve<MachineCycleAnalysis>(); + PA.preserve<MachineLoopAnalysis>(); + return PA; +} + +void MachineSinkingPass::printPipeline( + raw_ostream &OS, function_ref<StringRef(StringRef)> MapClassName2PassName) { + OS << "machine-sink"; + if (EnableSinkAndFold) + OS << "<enable-sink-fold>"; +} + +bool MachineSinkingLegacy::runOnMachineFunction(MachineFunction &MF) { if (skipFunction(MF.getFunction())) return false; + TargetPassConfig *PassConfig = &getAnalysis<TargetPassConfig>(); + bool EnableSinkAndFold = PassConfig->getEnableSinkAndFold(); + + MachineSinking Impl(this, nullptr, EnableSinkAndFold); + return Impl.run(MF); +} + +#define GET_ANALYSIS(ANALYSIS, INFIX, GETTER) \ + ((LegacyPass) \ + ? &LegacyPass->getAnalysis<ANALYSIS##INFIX##WrapperPass>().GETTER() \ + : &MFAM->getResult<ANALYSIS##Analysis>(MF)) + +bool MachineSinking::run(MachineFunction &MF) { LLVM_DEBUG(dbgs() << "******** Machine Sinking ********\n"); STI = &MF.getSubtarget(); TII = STI->getInstrInfo(); TRI = STI->getRegisterInfo(); MRI = &MF.getRegInfo(); - DT = &getAnalysis<MachineDominatorTreeWrapperPass>().getDomTree(); - PDT = &getAnalysis<MachinePostDominatorTreeWrapperPass>().getPostDomTree(); - CI = &getAnalysis<MachineCycleInfoWrapperPass>().getCycleInfo(); - PSI = &getAnalysis<ProfileSummaryInfoWrapperPass>().getPSI(); - MBFI = UseBlockFreqInfo - ? &getAnalysis<MachineBlockFrequencyInfoWrapperPass>().getMBFI() - : nullptr; - MBPI = &getAnalysis<MachineBranchProbabilityInfoWrapperPass>().getMBPI(); - AA = &getAnalysis<AAResultsWrapperPass>().getAAResults(); + DT = GET_ANALYSIS(MachineDominatorTree, , getDomTree); + PDT = GET_ANALYSIS(MachinePostDominatorTree, , getPostDomTree); + CI = GET_ANALYSIS(MachineCycle, Info, getCycleInfo); + PSI = (LegacyPass) ---------------- cdevadas wrote:
Passing them via their respective run* function seems tidy and better when we remove the legacy PM code later. https://github.com/llvm/llvm-project/pull/115434 _______________________________________________ llvm-branch-commits mailing list llvm-branch-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits