diff --git a/llvm/lib/Target/LoongArch/LoongArchSubtarget.cpp b/llvm/lib/Target/LoongArch/LoongArchSubtarget.cpp index 3acbe4992273a..6463fbb6922f7 100644 --- a/llvm/lib/Target/LoongArch/LoongArchSubtarget.cpp +++ b/llvm/lib/Target/LoongArch/LoongArchSubtarget.cpp @@ -22,11 +22,21 @@ using namespace llvm; #define GET_SUBTARGETINFO_CTOR #include "LoongArchGenSubtargetInfo.inc" +static cl::opt + DisableMISched("loongarch-disable-misched", cl::Hidden, + cl::desc("Disable LoongArch MI Scheduling")); + static cl::opt UseAA("loongarch-use-aa", cl::init(true), cl::desc("Enable the use of AA during codegen.")); void LoongArchSubtarget::anchor() {} +bool LoongArchSubtarget::enableMachineScheduler() const { + if (DisableMISched.getNumOccurrences()) + return !DisableMISched; + return true; +} + // Enable use of alias analysis during code generation (during MI scheduling, // DAGCombine, etc.). bool LoongArchSubtarget::useAA() const { return UseAA; } diff --git a/llvm/lib/Target/LoongArch/LoongArchSubtarget.h b/llvm/lib/Target/LoongArch/LoongArchSubtarget.h index 5e12bafebb0d5..10266e93ee5d6 100644 --- a/llvm/lib/Target/LoongArch/LoongArchSubtarget.h +++ b/llvm/lib/Target/LoongArch/LoongArchSubtarget.h @@ -104,7 +104,7 @@ class LoongArchSubtarget : public LoongArchGenSubtargetInfo { Align getPrefLoopAlignment() const { return PrefLoopAlignment; } unsigned getMaxBytesForAlignment() const { return MaxBytesForAlignment; } unsigned getMaxInterleaveFactor() const { return MaxInterleaveFactor; } - bool enableMachineScheduler() const override { return true; } + bool enableMachineScheduler() const override; bool useAA() const override; }; } // end namespace llvm