summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Target/ARM/ARMCallingConv.td
diff options
context:
space:
mode:
authorArnold Schwaighofer <aschwaighofer@apple.com>2017-09-25 17:51:33 +0000
committerArnold Schwaighofer <aschwaighofer@apple.com>2017-09-25 17:51:33 +0000
commitb45717addada437942fe1fafa98e724c034bfae3 (patch)
treedceda56260beb6833f415da8ca2738869b83b7de /llvm/lib/Target/ARM/ARMCallingConv.td
parent3015341d45d80663db6b38f238c435418dd98343 (diff)
downloadbcm5719-llvm-b45717addada437942fe1fafa98e724c034bfae3.tar.gz
bcm5719-llvm-b45717addada437942fe1fafa98e724c034bfae3.zip
ARM: One more fix for swifterror CSR set
We use a differently ordered CSR set if the frame pointer is pushed. Add a matching ..._SwiftError version. llvm-svn: 314128
Diffstat (limited to 'llvm/lib/Target/ARM/ARMCallingConv.td')
-rw-r--r--llvm/lib/Target/ARM/ARMCallingConv.td4
1 files changed, 4 insertions, 0 deletions
diff --git a/llvm/lib/Target/ARM/ARMCallingConv.td b/llvm/lib/Target/ARM/ARMCallingConv.td
index 0404b14f0a6..dcfd6518a84 100644
--- a/llvm/lib/Target/ARM/ARMCallingConv.td
+++ b/llvm/lib/Target/ARM/ARMCallingConv.td
@@ -258,6 +258,10 @@ def CSR_AAPCS_SplitPush : CalleeSavedRegs<(add LR, R7, R6, R5, R4,
R11, R10, R9, R8,
(sequence "D%u", 15, 8))>;
+// R8 is used to pass swifterror, remove it from CSR.
+def CSR_AAPCS_SplitPush_SwiftError : CalleeSavedRegs<(sub CSR_AAPCS_SplitPush,
+ R8)>;
+
// Constructors and destructors return 'this' in the ARM C++ ABI; since 'this'
// and the pointer return value are both passed in R0 in these cases, this can
// be partially modelled by treating R0 as a callee-saved register
OpenPOWER on IntegriCloud