diff options
| author | Manman Ren <manman.ren@gmail.com> | 2016-01-12 00:47:18 +0000 |
|---|---|---|
| committer | Manman Ren <manman.ren@gmail.com> | 2016-01-12 00:47:18 +0000 |
| commit | 5e9e65e705d75d616c00fdcebe2b1e2ddb1956bf (patch) | |
| tree | af54de63e0b4ec3e0379a9f9845345f2d49d117a /llvm/lib/Target/ARM/ARMCallingConv.td | |
| parent | e3580956eafac63324ba4db80de28cd9a030981a (diff) | |
| download | bcm5719-llvm-5e9e65e705d75d616c00fdcebe2b1e2ddb1956bf.tar.gz bcm5719-llvm-5e9e65e705d75d616c00fdcebe2b1e2ddb1956bf.zip | |
CXX_FAST_TLS calling convention: performance improvement for ARM.
This is the same change on ARM as r255821 on AArch64.
rdar://9001553
llvm-svn: 257424
Diffstat (limited to 'llvm/lib/Target/ARM/ARMCallingConv.td')
| -rw-r--r-- | llvm/lib/Target/ARM/ARMCallingConv.td | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/llvm/lib/Target/ARM/ARMCallingConv.td b/llvm/lib/Target/ARM/ARMCallingConv.td index e386a2e5cff..847ef87c1b2 100644 --- a/llvm/lib/Target/ARM/ARMCallingConv.td +++ b/llvm/lib/Target/ARM/ARMCallingConv.td @@ -234,6 +234,12 @@ def CSR_iOS_TLSCall : CalleeSavedRegs<(add LR, SP, def CSR_iOS_CXX_TLS : CalleeSavedRegs<(add CSR_iOS, (sequence "R%u", 12, 1), (sequence "D%u", 31, 0))>; +// CSRs that are handled by prologue, epilogue. +def CSR_iOS_CXX_TLS_PE : CalleeSavedRegs<(add LR)>; + +// CSRs that are handled explicitly via copies. +def CSR_iOS_CXX_TLS_ViaCopy : CalleeSavedRegs<(sub CSR_iOS_CXX_TLS, LR)>; + // 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 |

