diff options
author | Ryan Prichard <rprichard@google.com> | 2022-03-15 01:43:50 +0300 |
---|---|---|
committer | Ryan Prichard <rprichard@google.com> | 2022-03-15 01:44:35 +0300 |
commit | 659029302dfb16a29219f931f66e9ad483ad1445 (patch) | |
tree | e35fe546a94cb669d25e58c0f7681400d54d6c48 /test | |
parent | 56e7d6bd444cef8d879adc35dcf461cb4d2ed6d5 (diff) |
[ARM] __cxa_end_cleanup: avoid clobbering r4
The fix for D111703 clobbered r4 both to:
- Save/restore the original lr.
- Load the address of _Unwind_Resume for LIBCXXABI_BAREMETAL.
This patch saves and restores lr without clobbering any extra
registers.
For LIBCXXABI_BAREMETAL, it is still necessary to clobber one extra
register to hold the address of _Unwind_Resume, but it seems better to
use ip/r12 (intended for linker veneers/trampolines) than r4 for this
purpose.
The function also clobbers r0 for the _Unwind_Resume function's
parameter, but that is unavoidable.
Reviewed By: danielkiss, logan, MaskRay
Differential Revision: https://reviews.llvm.org/D121432
Diffstat (limited to 'test')
0 files changed, 0 insertions, 0 deletions