diff options
| author | Akira Hatanaka <ahatanaka@apple.com> | 2015-07-20 23:51:12 +0000 |
|---|---|---|
| committer | Akira Hatanaka <ahatanaka@apple.com> | 2015-07-20 23:51:12 +0000 |
| commit | 42427d2c3833ece68daae2d405e2a840bde31a82 (patch) | |
| tree | a2b73877391013e652e3f2264c450aad32ab200f /llvm/lib/Target/ARM | |
| parent | e35c220c8b10e3f21381ef95f7138cad273e6d96 (diff) | |
| download | bcm5719-llvm-42427d2c3833ece68daae2d405e2a840bde31a82.tar.gz bcm5719-llvm-42427d2c3833ece68daae2d405e2a840bde31a82.zip | |
Revert r242737.
This caused builds to fail with the following error message:
error:Too many subtarget features! Bump MAX_SUBTARGET_FEATURES.
llvm-svn: 242740
Diffstat (limited to 'llvm/lib/Target/ARM')
| -rw-r--r-- | llvm/lib/Target/ARM/ARM.td | 4 | ||||
| -rw-r--r-- | llvm/lib/Target/ARM/ARMSubtarget.cpp | 13 | ||||
| -rw-r--r-- | llvm/lib/Target/ARM/ARMSubtarget.h | 8 |
3 files changed, 13 insertions, 12 deletions
diff --git a/llvm/lib/Target/ARM/ARM.td b/llvm/lib/Target/ARM/ARM.td index cea97b5fa53..1dafff60921 100644 --- a/llvm/lib/Target/ARM/ARM.td +++ b/llvm/lib/Target/ARM/ARM.td @@ -154,10 +154,6 @@ def FeatureLongCalls : SubtargetFeature<"long-calls", "GenLongCalls", "true", "Generate calls via indirect call " "instructions">; -def FeatureReserveR9 : SubtargetFeature<"reserve-r9", "ReserveR9", "true", - "Reserve R9, making it unavailable as " - "GPR">; - def FeatureNoMovt : SubtargetFeature<"no-movt", "NoMovt", "true", "Don't use movt/movw pairs for 32-bit " "imms">; diff --git a/llvm/lib/Target/ARM/ARMSubtarget.cpp b/llvm/lib/Target/ARM/ARMSubtarget.cpp index 9d2f0291076..3180480986d 100644 --- a/llvm/lib/Target/ARM/ARMSubtarget.cpp +++ b/llvm/lib/Target/ARM/ARMSubtarget.cpp @@ -40,6 +40,10 @@ using namespace llvm; #include "ARMGenSubtargetInfo.inc" static cl::opt<bool> +ReserveR9("arm-reserve-r9", cl::Hidden, + cl::desc("Reserve R9, making it unavailable as GPR")); + +static cl::opt<bool> UseFusedMulOps("arm-use-mulops", cl::init(true), cl::Hidden); @@ -140,7 +144,7 @@ void ARMSubtarget::initializeEnvironment() { UseSoftFloat = false; HasThumb2 = false; NoARM = false; - ReserveR9 = false; + IsR9Reserved = ReserveR9; NoMovt = false; SupportsTailCall = false; HasFP16 = false; @@ -208,10 +212,13 @@ void ARMSubtarget::initSubtargetFeatures(StringRef CPU, StringRef FS) { if (isTargetNaCl()) stackAlignment = 16; - if (isTargetMachO()) + if (isTargetMachO()) { + IsR9Reserved = ReserveR9 || !HasV6Ops; SupportsTailCall = !isTargetIOS() || !getTargetTriple().isOSVersionLT(5, 0); - else + } else { + IsR9Reserved = ReserveR9; SupportsTailCall = !isThumb1Only(); + } if (Align == DefaultAlign) { // Assume pre-ARMv6 doesn't support unaligned accesses. diff --git a/llvm/lib/Target/ARM/ARMSubtarget.h b/llvm/lib/Target/ARM/ARMSubtarget.h index b80dc7051f1..4f9bc372e4b 100644 --- a/llvm/lib/Target/ARM/ARMSubtarget.h +++ b/llvm/lib/Target/ARM/ARMSubtarget.h @@ -109,8 +109,8 @@ protected: /// NoARM - True if subtarget does not support ARM mode execution. bool NoARM; - /// ReserveR9 - True if R9 is not available as a general purpose register. - bool ReserveR9; + /// IsR9Reserved - True if R9 is a not available as general purpose register. + bool IsR9Reserved; /// NoMovt - True if MOVT / MOVW pairs are not used for materialization of /// 32-bit imms (including global addresses). @@ -413,9 +413,7 @@ public: return isThumb1Only() && isMClass(); } - bool isR9Reserved() const { - return isTargetMachO() ? (ReserveR9 || !HasV6Ops) : ReserveR9; - } + bool isR9Reserved() const { return IsR9Reserved; } bool useMovt(const MachineFunction &MF) const; |

