2020#include " llvm/ADT/StringRef.h"
2121#include " llvm/CodeGen/MachineFunction.h"
2222#include " llvm/CodeGen/MachineFunctionPass.h"
23+ #include " llvm/CodeGen/MachinePassManager.h"
2324#include " llvm/Support/Discriminator.h"
2425
2526#include < cassert>
@@ -29,26 +30,21 @@ namespace llvm {
2930class MachineFunction ;
3031
3132using namespace sampleprof ;
32- class MIRAddFSDiscriminators : public MachineFunctionPass {
33+ class MIRAddFSDiscriminators {
3334 MachineFunction *MF = nullptr ;
3435 FSDiscriminatorPass Pass;
3536 unsigned LowBit;
3637 unsigned HighBit;
3738
3839public:
39- static char ID;
4040 // / PassNum is the sequence number this pass is called, start from 1.
4141 MIRAddFSDiscriminators (FSDiscriminatorPass P = FSDiscriminatorPass::Pass1)
42- : MachineFunctionPass(ID), Pass(P) {
42+ : Pass(P) {
4343 LowBit = getFSPassBitBegin (P);
4444 HighBit = getFSPassBitEnd (P);
4545 assert (LowBit < HighBit && " HighBit needs to be greater than Lowbit" );
4646 }
4747
48- StringRef getPassName () const override {
49- return " Add FS discriminators in MIR" ;
50- }
51-
5248 // / getNumFSBBs() - Return the number of machine BBs that have FS samples.
5349 unsigned getNumFSBBs ();
5450
@@ -59,8 +55,33 @@ class MIRAddFSDiscriminators : public MachineFunctionPass {
5955 // / getMachineFunction - Return the current machine function.
6056 const MachineFunction *getMachineFunction () const { return MF; }
6157
58+ bool runOnMachineFunction (MachineFunction &);
59+ };
60+
61+ class MIRAddFSDiscriminatorsLegacy : public MachineFunctionPass {
62+ FSDiscriminatorPass Pass;
63+
64+ public:
65+ static char ID;
66+ MIRAddFSDiscriminatorsLegacy (
67+ FSDiscriminatorPass P = FSDiscriminatorPass::Pass1)
68+ : MachineFunctionPass(ID), Pass(P) {}
69+ StringRef getPassName () const override {
70+ return " Add FS discriminators in MIR" ;
71+ }
72+
6273private:
63- bool runOnMachineFunction (MachineFunction &) override ;
74+ bool runOnMachineFunction (MachineFunction &MF) override ;
75+ };
76+
77+ class MIRAddFSDiscriminatorsPass
78+ : public PassInfoMixin<MIRAddFSDiscriminatorsPass> {
79+ FSDiscriminatorPass Pass;
80+
81+ public:
82+ MIRAddFSDiscriminatorsPass (FSDiscriminatorPass P = FSDiscriminatorPass::Pass1)
83+ : Pass(P) {}
84+ PreservedAnalyses run (MachineFunction &F, MachineFunctionAnalysisManager &AM);
6485};
6586
6687} // namespace llvm
0 commit comments