Index: include/llvm/CodeGen/MachineScheduler.h =================================================================== --- include/llvm/CodeGen/MachineScheduler.h +++ include/llvm/CodeGen/MachineScheduler.h @@ -1032,6 +1032,7 @@ createCopyConstrainDAGMutation(const TargetInstrInfo *TII, const TargetRegisterInfo *TRI); +bool enableMachineScheduler(const TargetSubtargetInfo &ST); } // end namespace llvm #endif // LLVM_CODEGEN_MACHINESCHEDULER_H Index: lib/CodeGen/MachineScheduler.cpp =================================================================== --- lib/CodeGen/MachineScheduler.cpp +++ lib/CodeGen/MachineScheduler.cpp @@ -262,6 +262,17 @@ cl::desc("Enable the machine instruction scheduling pass."), cl::init(true), cl::Hidden); +namespace llvm { +bool enableMachineScheduler(const TargetSubtargetInfo &ST) { + if (EnableMachineSched.getNumOccurrences()) { + if (!EnableMachineSched) + return false; + } else if (!ST.enableMachineScheduler()) + return false; + return true; +} +} // end namespace llvm + static cl::opt EnablePostRAMachineSched( "enable-post-misched", cl::desc("Enable the post-ra machine instruction scheduling pass."), @@ -356,10 +367,7 @@ if (skipFunction(*mf.getFunction())) return false; - if (EnableMachineSched.getNumOccurrences()) { - if (!EnableMachineSched) - return false; - } else if (!mf.getSubtarget().enableMachineScheduler()) + if (!enableMachineScheduler(mf.getSubtarget())) return false; DEBUG(dbgs() << "Before MISched:\n"; mf.print(dbgs())); Index: lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp =================================================================== --- lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp +++ lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp @@ -42,6 +42,7 @@ #include "llvm/CodeGen/MachineOperand.h" #include "llvm/CodeGen/MachinePassRegistry.h" #include "llvm/CodeGen/MachineRegisterInfo.h" +#include "llvm/CodeGen/MachineScheduler.h" #include "llvm/CodeGen/MachineValueType.h" #include "llvm/CodeGen/SchedulerRegistry.h" #include "llvm/CodeGen/SelectionDAG.h" @@ -251,7 +252,7 @@ } if (OptLevel == CodeGenOpt::None || - (ST.enableMachineScheduler() && ST.enableMachineSchedDefaultSched()) || + (enableMachineScheduler(ST) && ST.enableMachineSchedDefaultSched()) || TLI->getSchedulingPreference() == Sched::Source) return createSourceListDAGScheduler(IS, OptLevel); if (TLI->getSchedulingPreference() == Sched::RegPressure)