[SPARC] Switch to the Machine Scheduler.
authorJames Y Knight <jyknight@google.com>
Thu, 10 Sep 2015 18:20:45 +0000 (18:20 +0000)
committerJames Y Knight <jyknight@google.com>
Thu, 10 Sep 2015 18:20:45 +0000 (18:20 +0000)
The (mostly-deprecated) SelectionDAG-based ILPListDAGScheduler scheduler
was making poor scheduling decisions, causing high register pressure and
extraneous register spills.

Switching to the newer machine scheduler generates better code -- even
without there being a machine model defined for SPARC yet.

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

lib/Target/Sparc/SparcSubtarget.cpp
lib/Target/Sparc/SparcSubtarget.h

index 6bf8d41306263449b5e5499b7a0f43a3bc498296..d701594d27af018a702f1df43f37a320c5dd3c7b 100644 (file)
@@ -81,3 +81,7 @@ int SparcSubtarget::getAdjustedFrameSize(int frameSize) const {
   }
   return frameSize;
 }
+
+bool SparcSubtarget::enableMachineScheduler() const {
+  return true;
+}
index 9d21911d88f03abfdf89e399d2503897e4d93ded..e2fd2f04528af31a7b716e7efb8d5d0483d784ca 100644 (file)
@@ -60,6 +60,8 @@ public:
     return &TSInfo;
   }
 
+  bool enableMachineScheduler() const override;
+
   bool isV9() const { return IsV9; }
   bool isVIS() const { return IsVIS; }
   bool isVIS2() const { return IsVIS2; }
@@ -85,7 +87,6 @@ public:
   /// returns adjusted framesize which includes space for register window
   /// spills and arguments.
   int getAdjustedFrameSize(int stackSize) const;
-
 };
 
 } // end namespace llvm