2626//
2727// ===----------------------------------------------------------------------===//
2828
29+ #include " llvm/CodeGen/PostRAHazardRecognizer.h"
2930#include " llvm/ADT/Statistic.h"
3031#include " llvm/CodeGen/MachineFunctionPass.h"
3132#include " llvm/CodeGen/ScheduleHazardRecognizer.h"
@@ -40,30 +41,46 @@ using namespace llvm;
4041STATISTIC (NumNoops, " Number of noops inserted" );
4142
4243namespace {
43- class PostRAHazardRecognizer : public MachineFunctionPass {
44+ struct PostRAHazardRecognizer {
45+ bool run (MachineFunction &MF);
46+ };
4447
45- public:
46- static char ID;
47- PostRAHazardRecognizer () : MachineFunctionPass(ID) {}
48+ class PostRAHazardRecognizerLegacy : public MachineFunctionPass {
4849
49- void getAnalysisUsage (AnalysisUsage &AU) const override {
50- AU.setPreservesCFG ();
51- MachineFunctionPass::getAnalysisUsage (AU);
52- }
50+ public:
51+ static char ID;
52+ PostRAHazardRecognizerLegacy () : MachineFunctionPass(ID) {}
5353
54- bool runOnMachineFunction (MachineFunction &Fn) override ;
54+ void getAnalysisUsage (AnalysisUsage &AU) const override {
55+ AU.setPreservesCFG ();
56+ MachineFunctionPass::getAnalysisUsage (AU);
57+ }
5558
56- };
57- char PostRAHazardRecognizer::ID = 0 ;
59+ bool runOnMachineFunction (MachineFunction &Fn) override {
60+ return PostRAHazardRecognizer ().run (Fn);
61+ }
62+ };
63+ char PostRAHazardRecognizerLegacy::ID = 0 ;
5864
59- }
65+ } // namespace
6066
61- char &llvm::PostRAHazardRecognizerID = PostRAHazardRecognizer ::ID;
67+ char &llvm::PostRAHazardRecognizerID = PostRAHazardRecognizerLegacy ::ID;
6268
63- INITIALIZE_PASS (PostRAHazardRecognizer , DEBUG_TYPE,
69+ INITIALIZE_PASS (PostRAHazardRecognizerLegacy , DEBUG_TYPE,
6470 " Post RA hazard recognizer" , false , false )
6571
66- bool PostRAHazardRecognizer::runOnMachineFunction(MachineFunction &Fn) {
72+ PreservedAnalyses
73+ llvm::PostRAHazardRecognizerPass::run(MachineFunction &MF,
74+ MachineFunctionAnalysisManager &MFAM) {
75+ if (!PostRAHazardRecognizer ().run (MF))
76+ return PreservedAnalyses::all ();
77+
78+ auto PA = getMachineFunctionPassPreservedAnalyses ();
79+ PA.preserveSet <CFGAnalyses>();
80+ return PA;
81+ }
82+
83+ bool PostRAHazardRecognizer::run (MachineFunction &Fn) {
6784 const TargetInstrInfo *TII = Fn.getSubtarget ().getInstrInfo ();
6885 std::unique_ptr<ScheduleHazardRecognizer> HazardRec (
6986 TII->CreateTargetPostRAHazardRecognizer (Fn));
0 commit comments