From 8b38ffaa986a06a6bdbd243b26eacc46ce9e5889 Mon Sep 17 00:00:00 2001 From: Matthias Braun Date: Mon, 24 Oct 2016 23:23:02 +0000 Subject: [PATCH] CodeGen/Passes: Pass MachineFunction as functor arg; NFC Passing a MachineFunction as argument is more natural and avoids an unnecessary round-trip through the logic determining the correct Subtarget because MachineFunction already has a reference anyway. llvm-svn: 285039 --- llvm/include/llvm/CodeGen/Passes.h | 7 ++++--- llvm/lib/CodeGen/IfConversion.cpp | 9 ++++----- llvm/lib/CodeGen/MachineInstrBundle.cpp | 10 ++++++---- llvm/lib/Target/ARM/ARMTargetMachine.cpp | 8 ++++---- 4 files changed, 18 insertions(+), 16 deletions(-) diff --git a/llvm/include/llvm/CodeGen/Passes.h b/llvm/include/llvm/CodeGen/Passes.h index 7dc7d416ed09..2862ec450b8f 100644 --- a/llvm/include/llvm/CodeGen/Passes.h +++ b/llvm/include/llvm/CodeGen/Passes.h @@ -20,8 +20,8 @@ namespace llvm { -class Function; class FunctionPass; +class MachineFunction; class MachineFunctionPass; class ModulePass; class Pass; @@ -215,7 +215,8 @@ namespace llvm { /// IfConverter - This pass performs machine code if conversion. extern char &IfConverterID; - FunctionPass *createIfConverter(std::function Ftor); + FunctionPass *createIfConverter( + std::function Ftor); /// MachineBlockPlacement - This pass places basic blocks based on branch /// probabilities. @@ -326,7 +327,7 @@ namespace llvm { extern char &UnpackMachineBundlesID; FunctionPass * - createUnpackMachineBundles(std::function Ftor); + createUnpackMachineBundles(std::function Ftor); /// FinalizeMachineBundles - This pass finalize machine instruction /// bundles (created earlier, e.g. during pre-RA scheduling). diff --git a/llvm/lib/CodeGen/IfConversion.cpp b/llvm/lib/CodeGen/IfConversion.cpp index 025eea229cc3..e81af66c3b3b 100644 --- a/llvm/lib/CodeGen/IfConversion.cpp +++ b/llvm/lib/CodeGen/IfConversion.cpp @@ -184,11 +184,11 @@ namespace { bool PreRegAlloc; bool MadeChange; int FnNum; - std::function PredicateFtor; + std::function PredicateFtor; public: static char ID; - IfConverter(std::function Ftor = nullptr) + IfConverter(std::function Ftor = nullptr) : MachineFunctionPass(ID), FnNum(-1), PredicateFtor(std::move(Ftor)) { initializeIfConverterPass(*PassRegistry::getPassRegistry()); } @@ -321,8 +321,7 @@ INITIALIZE_PASS_DEPENDENCY(MachineBranchProbabilityInfo) INITIALIZE_PASS_END(IfConverter, "if-converter", "If Converter", false, false) bool IfConverter::runOnMachineFunction(MachineFunction &MF) { - if (skipFunction(*MF.getFunction()) || - (PredicateFtor && !PredicateFtor(*MF.getFunction()))) + if (skipFunction(*MF.getFunction()) || (PredicateFtor && !PredicateFtor(MF))) return false; const TargetSubtargetInfo &ST = MF.getSubtarget(); @@ -2295,6 +2294,6 @@ void IfConverter::MergeBlocks(BBInfo &ToBBI, BBInfo &FromBBI, bool AddEdges) { } FunctionPass * -llvm::createIfConverter(std::function Ftor) { +llvm::createIfConverter(std::function Ftor) { return new IfConverter(std::move(Ftor)); } diff --git a/llvm/lib/CodeGen/MachineInstrBundle.cpp b/llvm/lib/CodeGen/MachineInstrBundle.cpp index e4686b3c5c4e..b5621a09c6ff 100644 --- a/llvm/lib/CodeGen/MachineInstrBundle.cpp +++ b/llvm/lib/CodeGen/MachineInstrBundle.cpp @@ -24,7 +24,8 @@ namespace { class UnpackMachineBundles : public MachineFunctionPass { public: static char ID; // Pass identification - UnpackMachineBundles(std::function Ftor = nullptr) + UnpackMachineBundles( + std::function Ftor = nullptr) : MachineFunctionPass(ID), PredicateFtor(std::move(Ftor)) { initializeUnpackMachineBundlesPass(*PassRegistry::getPassRegistry()); } @@ -32,7 +33,7 @@ namespace { bool runOnMachineFunction(MachineFunction &MF) override; private: - std::function PredicateFtor; + std::function PredicateFtor; }; } // end anonymous namespace @@ -42,7 +43,7 @@ INITIALIZE_PASS(UnpackMachineBundles, "unpack-mi-bundles", "Unpack machine instruction bundles", false, false) bool UnpackMachineBundles::runOnMachineFunction(MachineFunction &MF) { - if (PredicateFtor && !PredicateFtor(*MF.getFunction())) + if (PredicateFtor && !PredicateFtor(MF)) return false; bool Changed = false; @@ -78,7 +79,8 @@ bool UnpackMachineBundles::runOnMachineFunction(MachineFunction &MF) { } FunctionPass * -llvm::createUnpackMachineBundles(std::function Ftor) { +llvm::createUnpackMachineBundles( + std::function Ftor) { return new UnpackMachineBundles(std::move(Ftor)); } diff --git a/llvm/lib/Target/ARM/ARMTargetMachine.cpp b/llvm/lib/Target/ARM/ARMTargetMachine.cpp index 0e74ab0a4999..4ef882a7bc82 100644 --- a/llvm/lib/Target/ARM/ARMTargetMachine.cpp +++ b/llvm/lib/Target/ARM/ARMTargetMachine.cpp @@ -443,8 +443,8 @@ void ARMPassConfig::addPreSched2() { return this->TM->getSubtarget(F).restrictIT(); })); - addPass(createIfConverter([this](const Function &F) { - return !this->TM->getSubtarget(F).isThumb1Only(); + addPass(createIfConverter([](const MachineFunction &MF) { + return !MF.getSubtarget().isThumb1Only(); })); } addPass(createThumb2ITBlockPass()); @@ -454,8 +454,8 @@ void ARMPassConfig::addPreEmitPass() { addPass(createThumb2SizeReductionPass()); // Constant island pass work on unbundled instructions. - addPass(createUnpackMachineBundles([this](const Function &F) { - return this->TM->getSubtarget(F).isThumb2(); + addPass(createUnpackMachineBundles([](const MachineFunction &MF) { + return MF.getSubtarget().isThumb2(); })); // Don't optimize barriers at -O0.