[ARM] Define subtarget feature "reserve-r9", which is used to decide
[oota-llvm.git] / lib / Target / ARM / ARMSubtarget.h
index 4f9bc372e4b19f93aad4373176993196c8f0dc2b..b80dc7051f15f788b4f1673c69bedda7885b31b2 100644 (file)
@@ -109,8 +109,8 @@ protected:
   /// NoARM - True if subtarget does not support ARM mode execution.
   bool NoARM;
 
-  /// IsR9Reserved - True if R9 is a not available as general purpose register.
-  bool IsR9Reserved;
+  /// ReserveR9 - True if R9 is not available as a general purpose register.
+  bool ReserveR9;
 
   /// NoMovt - True if MOVT / MOVW pairs are not used for materialization of
   /// 32-bit imms (including global addresses).
@@ -413,7 +413,9 @@ public:
     return isThumb1Only() && isMClass();
   }
 
-  bool isR9Reserved() const { return IsR9Reserved; }
+  bool isR9Reserved() const {
+    return isTargetMachO() ? (ReserveR9 || !HasV6Ops) : ReserveR9;
+  }
 
   bool useMovt(const MachineFunction &MF) const;