summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Target/ARM/ARMCallingConv.td
diff options
context:
space:
mode:
authorManman Ren <manman.ren@gmail.com>2016-01-11 23:50:43 +0000
committerManman Ren <manman.ren@gmail.com>2016-01-11 23:50:43 +0000
commit1602605bf85f4fcc37aa2481a0e9ad7772444c47 (patch)
treed8412907478e571a5746619948014b75b07d4a4a /llvm/lib/Target/ARM/ARMCallingConv.td
parent26c6765bd6fe1f672b0a58f35a89083518d67465 (diff)
downloadbcm5719-llvm-1602605bf85f4fcc37aa2481a0e9ad7772444c47.tar.gz
bcm5719-llvm-1602605bf85f4fcc37aa2481a0e9ad7772444c47.zip
CXX_FAST_TLS calling convention: Add support for ARM on Darwin.
rdar://9001553 llvm-svn: 257417
Diffstat (limited to 'llvm/lib/Target/ARM/ARMCallingConv.td')
-rw-r--r--llvm/lib/Target/ARM/ARMCallingConv.td5
1 files changed, 5 insertions, 0 deletions
diff --git a/llvm/lib/Target/ARM/ARMCallingConv.td b/llvm/lib/Target/ARM/ARMCallingConv.td
index 22ea166d540..e386a2e5cff 100644
--- a/llvm/lib/Target/ARM/ARMCallingConv.td
+++ b/llvm/lib/Target/ARM/ARMCallingConv.td
@@ -229,6 +229,11 @@ def CSR_iOS_TLSCall : CalleeSavedRegs<(add LR, SP,
(sequence "R%u", 12, 1),
(sequence "D%u", 31, 0))>;
+// C++ TLS access function saves all registers except SP. Try to match
+// the order of CSRs in CSR_iOS.
+def CSR_iOS_CXX_TLS : CalleeSavedRegs<(add CSR_iOS, (sequence "R%u", 12, 1),
+ (sequence "D%u", 31, 0))>;
+
// The "interrupt" attribute is used to generate code that is acceptable in
// exception-handlers of various kinds. It makes us use a different return
// instruction (handled elsewhere) and affects which registers we must return to
OpenPOWER on IntegriCloud