@@ -3839,21 +3839,35 @@ namespace {
38393839// / placement. This is separate from the actual placement pass so that they can
38403840// / be computed in the absence of any placement transformations or when using
38413841// / alternative placement strategies.
3842- class MachineBlockPlacementStats : public MachineFunctionPass {
3842+ class MachineBlockPlacementStats {
38433843 // / A handle to the branch probability pass.
38443844 const MachineBranchProbabilityInfo *MBPI;
38453845
38463846 // / A handle to the function-wide block frequency pass.
38473847 const MachineBlockFrequencyInfo *MBFI;
38483848
3849+ public:
3850+ MachineBlockPlacementStats (const MachineBranchProbabilityInfo *MBPI,
3851+ const MachineBlockFrequencyInfo *MBFI)
3852+ : MBPI(MBPI), MBFI(MBFI) {}
3853+ bool run (MachineFunction &MF);
3854+ };
3855+
3856+ class MachineBlockPlacementStatsLegacy : public MachineFunctionPass {
38493857public:
38503858 static char ID; // Pass identification, replacement for typeid
38513859
3852- MachineBlockPlacementStats () : MachineFunctionPass(ID) {
3853- initializeMachineBlockPlacementStatsPass (*PassRegistry::getPassRegistry ());
3860+ MachineBlockPlacementStatsLegacy () : MachineFunctionPass(ID) {
3861+ initializeMachineBlockPlacementStatsLegacyPass (
3862+ *PassRegistry::getPassRegistry ());
38543863 }
38553864
3856- bool runOnMachineFunction (MachineFunction &F) override ;
3865+ bool runOnMachineFunction (MachineFunction &F) override {
3866+ auto *MBPI =
3867+ &getAnalysis<MachineBranchProbabilityInfoWrapperPass>().getMBPI ();
3868+ auto *MBFI = &getAnalysis<MachineBlockFrequencyInfoWrapperPass>().getMBFI ();
3869+ return MachineBlockPlacementStats (MBPI, MBFI).run (F);
3870+ }
38573871
38583872 void getAnalysisUsage (AnalysisUsage &AU) const override {
38593873 AU.addRequired <MachineBranchProbabilityInfoWrapperPass>();
@@ -3865,28 +3879,35 @@ class MachineBlockPlacementStats : public MachineFunctionPass {
38653879
38663880} // end anonymous namespace
38673881
3868- char MachineBlockPlacementStats ::ID = 0 ;
3882+ char MachineBlockPlacementStatsLegacy ::ID = 0 ;
38693883
3870- char &llvm::MachineBlockPlacementStatsID = MachineBlockPlacementStats ::ID;
3884+ char &llvm::MachineBlockPlacementStatsID = MachineBlockPlacementStatsLegacy ::ID;
38713885
3872- INITIALIZE_PASS_BEGIN (MachineBlockPlacementStats , " block-placement-stats" ,
3886+ INITIALIZE_PASS_BEGIN (MachineBlockPlacementStatsLegacy , " block-placement-stats" ,
38733887 " Basic Block Placement Stats" , false , false )
38743888INITIALIZE_PASS_DEPENDENCY(MachineBranchProbabilityInfoWrapperPass)
38753889INITIALIZE_PASS_DEPENDENCY(MachineBlockFrequencyInfoWrapperPass)
3876- INITIALIZE_PASS_END(MachineBlockPlacementStats , " block-placement-stats" ,
3890+ INITIALIZE_PASS_END(MachineBlockPlacementStatsLegacy , " block-placement-stats" ,
38773891 " Basic Block Placement Stats" , false , false )
38783892
3879- bool MachineBlockPlacementStats::runOnMachineFunction(MachineFunction &F) {
3893+ PreservedAnalyses
3894+ MachineBlockPlacementStatsPass::run(MachineFunction &MF,
3895+ MachineFunctionAnalysisManager &MFAM) {
3896+ auto &MBPI = MFAM.getResult <MachineBranchProbabilityAnalysis>(MF);
3897+ auto &MBFI = MFAM.getResult <MachineBlockFrequencyAnalysis>(MF);
3898+
3899+ MachineBlockPlacementStats (&MBPI, &MBFI).run (MF);
3900+ return PreservedAnalyses::all ();
3901+ }
3902+
3903+ bool MachineBlockPlacementStats::run (MachineFunction &F) {
38803904 // Check for single-block functions and skip them.
38813905 if (std::next (F.begin ()) == F.end ())
38823906 return false ;
38833907
38843908 if (!isFunctionInPrintList (F.getName ()))
38853909 return false ;
38863910
3887- MBPI = &getAnalysis<MachineBranchProbabilityInfoWrapperPass>().getMBPI ();
3888- MBFI = &getAnalysis<MachineBlockFrequencyInfoWrapperPass>().getMBFI ();
3889-
38903911 for (MachineBasicBlock &MBB : F) {
38913912 BlockFrequency BlockFreq = MBFI->getBlockFreq (&MBB);
38923913 Statistic &NumBranches =
0 commit comments