Fix X86 subtarget to not overwrite the autodetected features by calling InitMCProcess...
authorCraig Topper <craig.topper@gmail.com>
Wed, 18 Sep 2013 05:54:09 +0000 (05:54 +0000)
committerCraig Topper <craig.topper@gmail.com>
Wed, 18 Sep 2013 05:54:09 +0000 (05:54 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@190919 91177308-0d34-0410-b5e6-96231b3b80d8

include/llvm/MC/MCSubtargetInfo.h
lib/MC/MCSubtargetInfo.cpp
lib/Target/X86/X86Subtarget.cpp

index 346fb2df0ffc03e4ab8515dcc1c13ad31bdf78ec..01e8236482f7a46d2c24d7732b5f7ad6eb9222b0 100644 (file)
@@ -72,6 +72,9 @@ public:
   /// feature string). Recompute feature bits and scheduling model.
   void InitMCProcessorInfo(StringRef CPU, StringRef FS);
 
+  /// InitCPUSchedModel - Recompute scheduling model based on CPU.
+  void InitCPUSchedModel(StringRef CPU);
+
   /// ToggleFeature - Toggle a feature and returns the re-computed feature
   /// bits. This version does not change the implied bits.
   uint64_t ToggleFeature(uint64_t FB);
index f18828dd41ef34ec801a5b9fbef07d99c88de05d..ad19921ff9fcaf5566f37a306ee1b9188afb4c24 100644 (file)
@@ -27,6 +27,11 @@ MCSubtargetInfo::InitMCProcessorInfo(StringRef CPU, StringRef FS) {
   FeatureBits = Features.getFeatureBits(CPU, ProcDesc, NumProcs,
                                         ProcFeatures, NumFeatures);
 
+  InitCPUSchedModel(CPU);
+}
+
+void
+MCSubtargetInfo::InitCPUSchedModel(StringRef CPU) {
   if (!CPU.empty())
     CPUSchedModel = getSchedModelForCPU(CPU);
   else
index 78c9a1a6a343bfe8745db9d7c1ac9ebb57a47193..ae31bb834bd091b14304a25a2a4539803daf1678 100644 (file)
@@ -453,7 +453,7 @@ void X86Subtarget::resetSubtargetFeatures(StringRef CPU, StringRef FS) {
 
   // CPUName may have been set by the CPU detection code. Make sure the
   // new MCSchedModel is used.
-  InitMCProcessorInfo(CPUName, FS);
+  InitCPUSchedModel(CPUName);
 
   if (X86ProcFamily == IntelAtom || X86ProcFamily == IntelSLM)
     PostRAScheduler = true;