diff options
Diffstat (limited to 'contrib/llvm-project/llvm/lib/CodeGen/PostRAHazardRecognizer.cpp')
| -rw-r--r-- | contrib/llvm-project/llvm/lib/CodeGen/PostRAHazardRecognizer.cpp | 47 |
1 files changed, 32 insertions, 15 deletions
diff --git a/contrib/llvm-project/llvm/lib/CodeGen/PostRAHazardRecognizer.cpp b/contrib/llvm-project/llvm/lib/CodeGen/PostRAHazardRecognizer.cpp index 97b1532300b1..29cfc06d90b2 100644 --- a/contrib/llvm-project/llvm/lib/CodeGen/PostRAHazardRecognizer.cpp +++ b/contrib/llvm-project/llvm/lib/CodeGen/PostRAHazardRecognizer.cpp @@ -26,6 +26,7 @@ // //===----------------------------------------------------------------------===// +#include "llvm/CodeGen/PostRAHazardRecognizer.h" #include "llvm/ADT/Statistic.h" #include "llvm/CodeGen/MachineFunctionPass.h" #include "llvm/CodeGen/ScheduleHazardRecognizer.h" @@ -40,30 +41,46 @@ using namespace llvm; STATISTIC(NumNoops, "Number of noops inserted"); namespace { - class PostRAHazardRecognizer : public MachineFunctionPass { +struct PostRAHazardRecognizer { + bool run(MachineFunction &MF); +}; - public: - static char ID; - PostRAHazardRecognizer() : MachineFunctionPass(ID) {} +class PostRAHazardRecognizerLegacy : public MachineFunctionPass { - void getAnalysisUsage(AnalysisUsage &AU) const override { - AU.setPreservesCFG(); - MachineFunctionPass::getAnalysisUsage(AU); - } +public: + static char ID; + PostRAHazardRecognizerLegacy() : MachineFunctionPass(ID) {} - bool runOnMachineFunction(MachineFunction &Fn) override; + void getAnalysisUsage(AnalysisUsage &AU) const override { + AU.setPreservesCFG(); + MachineFunctionPass::getAnalysisUsage(AU); + } - }; - char PostRAHazardRecognizer::ID = 0; + bool runOnMachineFunction(MachineFunction &Fn) override { + return PostRAHazardRecognizer().run(Fn); + } +}; +char PostRAHazardRecognizerLegacy::ID = 0; -} +} // namespace -char &llvm::PostRAHazardRecognizerID = PostRAHazardRecognizer::ID; +char &llvm::PostRAHazardRecognizerID = PostRAHazardRecognizerLegacy::ID; -INITIALIZE_PASS(PostRAHazardRecognizer, DEBUG_TYPE, +INITIALIZE_PASS(PostRAHazardRecognizerLegacy, DEBUG_TYPE, "Post RA hazard recognizer", false, false) -bool PostRAHazardRecognizer::runOnMachineFunction(MachineFunction &Fn) { +PreservedAnalyses +llvm::PostRAHazardRecognizerPass::run(MachineFunction &MF, + MachineFunctionAnalysisManager &MFAM) { + if (!PostRAHazardRecognizer().run(MF)) + return PreservedAnalyses::all(); + + auto PA = getMachineFunctionPassPreservedAnalyses(); + PA.preserveSet<CFGAnalyses>(); + return PA; +} + +bool PostRAHazardRecognizer::run(MachineFunction &Fn) { const TargetInstrInfo *TII = Fn.getSubtarget().getInstrInfo(); std::unique_ptr<ScheduleHazardRecognizer> HazardRec( TII->CreateTargetPostRAHazardRecognizer(Fn)); |
