26
26
//
27
27
// ===----------------------------------------------------------------------===//
28
28
29
+ #include " llvm/CodeGen/PostRAHazardRecognizer.h"
29
30
#include " llvm/ADT/Statistic.h"
30
31
#include " llvm/CodeGen/MachineFunctionPass.h"
31
32
#include " llvm/CodeGen/ScheduleHazardRecognizer.h"
@@ -40,30 +41,46 @@ using namespace llvm;
40
41
STATISTIC (NumNoops, " Number of noops inserted" );
41
42
42
43
namespace {
43
- class PostRAHazardRecognizer : public MachineFunctionPass {
44
+ struct PostRAHazardRecognizer {
45
+ bool run (MachineFunction &MF);
46
+ };
44
47
45
- public:
46
- static char ID;
47
- PostRAHazardRecognizer () : MachineFunctionPass(ID) {}
48
+ class PostRAHazardRecognizerLegacy : public MachineFunctionPass {
48
49
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) {}
53
53
54
- bool runOnMachineFunction (MachineFunction &Fn) override ;
54
+ void getAnalysisUsage (AnalysisUsage &AU) const override {
55
+ AU.setPreservesCFG ();
56
+ MachineFunctionPass::getAnalysisUsage (AU);
57
+ }
55
58
56
- };
57
- char PostRAHazardRecognizer::ID = 0 ;
59
+ bool runOnMachineFunction (MachineFunction &Fn) override {
60
+ return PostRAHazardRecognizer ().run (Fn);
61
+ }
62
+ };
63
+ char PostRAHazardRecognizerLegacy::ID = 0 ;
58
64
59
- }
65
+ } // namespace
60
66
61
- char &llvm::PostRAHazardRecognizerID = PostRAHazardRecognizer ::ID;
67
+ char &llvm::PostRAHazardRecognizerID = PostRAHazardRecognizerLegacy ::ID;
62
68
63
- INITIALIZE_PASS (PostRAHazardRecognizer , DEBUG_TYPE,
69
+ INITIALIZE_PASS (PostRAHazardRecognizerLegacy , DEBUG_TYPE,
64
70
" Post RA hazard recognizer" , false , false )
65
71
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) {
67
84
const TargetInstrInfo *TII = Fn.getSubtarget ().getInstrInfo ();
68
85
std::unique_ptr<ScheduleHazardRecognizer> HazardRec (
69
86
TII->CreateTargetPostRAHazardRecognizer (Fn));
0 commit comments