aboutsummaryrefslogtreecommitdiffstats
path: root/lib/Target
diff options
context:
space:
mode:
authorVikram S. Adve <vadve@cs.uiuc.edu>2003-09-16 05:55:15 +0000
committerVikram S. Adve <vadve@cs.uiuc.edu>2003-09-16 05:55:15 +0000
commitbed4effb84cb0834d01f9f8b1f9e87313520335f (patch)
treeec54c81056540d24331b1e744475d4edc86dba53 /lib/Target
parent1ce5c596a206acb80d8dc58abae6bd0029befba9 (diff)
downloadexternal_llvm-bed4effb84cb0834d01f9f8b1f9e87313520335f.zip
external_llvm-bed4effb84cb0834d01f9f8b1f9e87313520335f.tar.gz
external_llvm-bed4effb84cb0834d01f9f8b1f9e87313520335f.tar.bz2
Add flag to control whether or not delay slots are filled during
instruction scheduling (this is off by default). git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@8553 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Target')
-rw-r--r--lib/Target/SparcV9/InstrSched/InstrScheduling.cpp8
1 files changed, 7 insertions, 1 deletions
diff --git a/lib/Target/SparcV9/InstrSched/InstrScheduling.cpp b/lib/Target/SparcV9/InstrSched/InstrScheduling.cpp
index 00a6a55..392ae04 100644
--- a/lib/Target/SparcV9/InstrSched/InstrScheduling.cpp
+++ b/lib/Target/SparcV9/InstrSched/InstrScheduling.cpp
@@ -17,6 +17,9 @@
SchedDebugLevel_t SchedDebugLevel;
+static cl::opt<bool> EnableFillingDelaySlots("sched-fill-delay-slots",
+ cl::desc("Fill branch delay slots during local scheduling"));
+
static cl::opt<SchedDebugLevel_t, true>
SDL_opt("dsched", cl::Hidden, cl::location(SchedDebugLevel),
cl::desc("enable instruction scheduling debugging information"),
@@ -1255,7 +1258,8 @@ ChooseInstructionsForDelaySlots(SchedulingManager& S, MachineBasicBlock &MBB,
std::vector<SchedGraphNode*> delayNodeVec;
const MachineInstr* brInstr = NULL;
- if (termInstr->getOpcode() != Instruction::Ret)
+ if (EnableFillingDelaySlots &&
+ termInstr->getOpcode() != Instruction::Ret)
{
// To find instructions that need delay slots without searching the full
// machine code, we assume that the only delayed instructions are CALLs
@@ -1285,6 +1289,8 @@ ChooseInstructionsForDelaySlots(SchedulingManager& S, MachineBasicBlock &MBB,
// Also mark delay slots for other delayed instructions to hold NOPs.
// Simply passing in an empty delayNodeVec will have this effect.
+ // If brInstr is not handled above (EnableFillingDelaySlots == false),
+ // brInstr will be NULL so this will handle the branch instrs. as well.
//
delayNodeVec.clear();
for (unsigned i=0; i < MBB.size(); ++i)