Add an option to disable spill hoisting.
authorJakob Stoklund Olesen <stoklund@2pi.dk>
Thu, 15 Sep 2011 21:06:00 +0000 (21:06 +0000)
committerJakob Stoklund Olesen <stoklund@2pi.dk>
Thu, 15 Sep 2011 21:06:00 +0000 (21:06 +0000)
When -split-spill-mode is enabled, spill hoisting is performed by
SplitKit instead of by InlineSpiller.  This hidden command line option
is for testing the splitter spill mode.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139845 91177308-0d34-0410-b5e6-96231b3b80d8

lib/CodeGen/InlineSpiller.cpp

index 169a867aa7a5500eabc2eeb1936fc5c1b657c947..01fe84030e33e83f59157d55434fd3a96824f448 100644 (file)
@@ -28,6 +28,7 @@
 #include "llvm/CodeGen/MachineRegisterInfo.h"
 #include "llvm/Target/TargetMachine.h"
 #include "llvm/Target/TargetInstrInfo.h"
+#include "llvm/Support/CommandLine.h"
 #include "llvm/Support/Debug.h"
 #include "llvm/Support/raw_ostream.h"
 
@@ -45,6 +46,9 @@ STATISTIC(NumRemats,          "Number of rematerialized defs for spilling");
 STATISTIC(NumOmitReloadSpill, "Number of omitted spills of reloads");
 STATISTIC(NumHoists,          "Number of hoisted spills");
 
+static cl::opt<bool> DisableHoisting("disable-spill-hoist", cl::Hidden,
+                                     cl::desc("Disable inline spill hoisting"));
+
 namespace {
 class InlineSpiller : public Spiller {
   MachineFunctionPass &Pass;
@@ -367,7 +371,7 @@ void InlineSpiller::propagateSiblingValue(SibValueMap::iterator SVI,
 
     // Should this value be propagated as a preferred spill candidate?  We don't
     // propagate values of registers that are about to spill.
-    bool PropSpill = !isRegToSpill(SV.SpillReg);
+    bool PropSpill = !DisableHoisting && !isRegToSpill(SV.SpillReg);
     unsigned SpillDepth = ~0u;
 
     for (TinyPtrVector<VNInfo*>::iterator DepI = Deps->begin(),