1414#include " llvm/CodeGen/MachineCFGPrinter.h"
1515#include " llvm/CodeGen/MachineBasicBlock.h"
1616#include " llvm/CodeGen/MachineFunctionPass.h"
17+ #include " llvm/CodeGen/MachinePassManager.h"
1718#include " llvm/CodeGen/TargetSubtargetInfo.h"
1819#include " llvm/InitializePasses.h"
1920#include " llvm/Pass.h"
@@ -56,11 +57,11 @@ static void writeMCFGToDotFile(MachineFunction &MF) {
5657
5758namespace {
5859
59- class MachineCFGPrinter : public MachineFunctionPass {
60+ class MachineCFGPrinterLegacy : public MachineFunctionPass {
6061public:
6162 static char ID;
6263
63- MachineCFGPrinter ();
64+ MachineCFGPrinterLegacy ();
6465
6566 bool runOnMachineFunction (MachineFunction &MF) override ;
6667
@@ -72,17 +73,17 @@ class MachineCFGPrinter : public MachineFunctionPass {
7273
7374} // namespace
7475
75- char MachineCFGPrinter ::ID = 0 ;
76+ char MachineCFGPrinterLegacy ::ID = 0 ;
7677
77- char &llvm::MachineCFGPrinterID = MachineCFGPrinter ::ID;
78+ char &llvm::MachineCFGPrinterID = MachineCFGPrinterLegacy ::ID;
7879
79- INITIALIZE_PASS (MachineCFGPrinter , DEBUG_TYPE, " Machine CFG Printer Pass" ,
80+ INITIALIZE_PASS (MachineCFGPrinterLegacy , DEBUG_TYPE, " Machine CFG Printer Pass" ,
8081 false , true )
8182
8283// / Default construct and initialize the pass.
83- MachineCFGPrinter::MachineCFGPrinter () : MachineFunctionPass(ID) {}
84+ MachineCFGPrinterLegacy::MachineCFGPrinterLegacy () : MachineFunctionPass(ID) {}
8485
85- bool MachineCFGPrinter ::runOnMachineFunction (MachineFunction &MF) {
86+ bool MachineCFGPrinterLegacy ::runOnMachineFunction (MachineFunction &MF) {
8687 if (!MCFGFuncName.empty () && !MF.getName ().contains (MCFGFuncName))
8788 return false ;
8889 errs () << " Writing Machine CFG for function " ;
@@ -91,3 +92,15 @@ bool MachineCFGPrinter::runOnMachineFunction(MachineFunction &MF) {
9192 writeMCFGToDotFile (MF);
9293 return false ;
9394}
95+
96+ PreservedAnalyses
97+ MachineCFGPrinterPass::run (MachineFunction &MF,
98+ MachineFunctionAnalysisManager &MFAM) {
99+ if (!MCFGFuncName.empty () && !MF.getName ().contains (MCFGFuncName))
100+ return PreservedAnalyses::all ();
101+ errs () << " Writing Machine CFG for function " ;
102+ errs ().write_escaped (MF.getName ()) << ' \n ' ;
103+
104+ writeMCFGToDotFile (MF);
105+ return PreservedAnalyses::all ();
106+ }
0 commit comments