1111//
1212// ===----------------------------------------------------------------------===//
1313
14+ #include " llvm/CodeGen/PatchableFunction.h"
1415#include " llvm/CodeGen/MachineFunction.h"
1516#include " llvm/CodeGen/MachineFunctionPass.h"
1617#include " llvm/CodeGen/MachineInstrBuilder.h"
2324using namespace llvm ;
2425
2526namespace {
26- struct PatchableFunction : public MachineFunctionPass {
27- static char ID; // Pass identification, replacement for typeid
28- PatchableFunction () : MachineFunctionPass(ID) {
29- initializePatchableFunctionPass (*PassRegistry::getPassRegistry ());
27+ struct PatchableFunction {
28+ bool run (MachineFunction &F);
29+ };
30+
31+ struct PatchableFunctionLegacy : public MachineFunctionPass {
32+ static char ID;
33+ PatchableFunctionLegacy () : MachineFunctionPass(ID) {
34+ initializePatchableFunctionLegacyPass (*PassRegistry::getPassRegistry ());
35+ }
36+ bool runOnMachineFunction (MachineFunction &F) override {
37+ return PatchableFunction ().run (F);
3038 }
3139
32- bool runOnMachineFunction (MachineFunction &F) override ;
33- MachineFunctionProperties getRequiredProperties () const override {
40+ MachineFunctionProperties getRequiredProperties () const override {
3441 return MachineFunctionProperties ().set (
3542 MachineFunctionProperties::Property::NoVRegs);
3643 }
3744};
45+
46+ } // namespace
47+
48+ PreservedAnalyses
49+ PatchableFunctionPass::run (MachineFunction &MF,
50+ MachineFunctionAnalysisManager &MFAM) {
51+ MFPropsModifier _ (*this , MF);
52+ if (!PatchableFunction ().run (MF))
53+ return PreservedAnalyses::all ();
54+ return getMachineFunctionPassPreservedAnalyses ();
3855}
3956
40- bool PatchableFunction::runOnMachineFunction (MachineFunction &MF) {
57+ bool PatchableFunction::run (MachineFunction &MF) {
4158 MachineBasicBlock &FirstMBB = *MF.begin ();
4259
4360 if (MF.getFunction ().hasFnAttribute (" patchable-function-entry" )) {
@@ -62,7 +79,7 @@ bool PatchableFunction::runOnMachineFunction(MachineFunction &MF) {
6279 return false ;
6380}
6481
65- char PatchableFunction ::ID = 0 ;
66- char &llvm::PatchableFunctionID = PatchableFunction ::ID;
67- INITIALIZE_PASS (PatchableFunction , " patchable-function" ,
82+ char PatchableFunctionLegacy ::ID = 0 ;
83+ char &llvm::PatchableFunctionID = PatchableFunctionLegacy ::ID;
84+ INITIALIZE_PASS (PatchableFunctionLegacy , " patchable-function" ,
6885 " Implement the 'patchable-function' attribute" , false , false )
0 commit comments