diff options
author | Akira Hatanaka <ahatanaka@apple.com> | 2015-07-21 01:42:02 +0000 |
---|---|---|
committer | Akira Hatanaka <ahatanaka@apple.com> | 2015-07-21 01:42:02 +0000 |
commit | 285815258c80b6ddfb3cb1e5b15a0ead22e345c2 (patch) | |
tree | 31ab116b2b473a14c5b7b13a212addc89b92aabd /llvm/lib/Target/ARM/ARMSubtarget.cpp | |
parent | 0a23fac13cbb1e6cf2d0bc782a6f31b9ef7b64b0 (diff) | |
download | bcm5719-llvm-285815258c80b6ddfb3cb1e5b15a0ead22e345c2.tar.gz bcm5719-llvm-285815258c80b6ddfb3cb1e5b15a0ead22e345c2.zip |
[ARM] Define subtarget feature "reserve-r9", which is used to decide
whether register r9 should be reserved.
This recommits r242737, which broke bots because the number of subtarget
features went over the limit of 64.
This change is needed because we cannot use a backend option to set
cl::opt "arm-reserve-r9" when doing LTO.
Out-of-tree projects currently using cl::opt option "-arm-reserve-r9" to
reserve r9 should make changes to add subtarget feature "reserve-r9" to
the IR.
rdar://problem/21529937
Differential Revision: http://reviews.llvm.org/D11320
llvm-svn: 242756
Diffstat (limited to 'llvm/lib/Target/ARM/ARMSubtarget.cpp')
-rw-r--r-- | llvm/lib/Target/ARM/ARMSubtarget.cpp | 13 |
1 files changed, 3 insertions, 10 deletions
diff --git a/llvm/lib/Target/ARM/ARMSubtarget.cpp b/llvm/lib/Target/ARM/ARMSubtarget.cpp index 3180480986d..9d2f0291076 100644 --- a/llvm/lib/Target/ARM/ARMSubtarget.cpp +++ b/llvm/lib/Target/ARM/ARMSubtarget.cpp @@ -40,10 +40,6 @@ 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); @@ -144,7 +140,7 @@ void ARMSubtarget::initializeEnvironment() { UseSoftFloat = false; HasThumb2 = false; NoARM = false; - IsR9Reserved = ReserveR9; + ReserveR9 = false; NoMovt = false; SupportsTailCall = false; HasFP16 = false; @@ -212,13 +208,10 @@ void ARMSubtarget::initSubtargetFeatures(StringRef CPU, StringRef FS) { if (isTargetNaCl()) stackAlignment = 16; - if (isTargetMachO()) { - IsR9Reserved = ReserveR9 || !HasV6Ops; + if (isTargetMachO()) SupportsTailCall = !isTargetIOS() || !getTargetTriple().isOSVersionLT(5, 0); - } else { - IsR9Reserved = ReserveR9; + else SupportsTailCall = !isThumb1Only(); - } if (Align == DefaultAlign) { // Assume pre-ARMv6 doesn't support unaligned accesses. |