diff options
author | Oliver Stannard <oliver.stannard@arm.com> | 2024-11-28 10:37:57 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-11-28 09:37:57 +0000 |
commit | 0c0f765cab4b16eb0342d514584cdf64cabc433a (patch) | |
tree | 1f250a63a5ed1bd7e8928df2e943a59f66549bf7 /llvm/lib/Bitcode/Reader/BitcodeReader.cpp | |
parent | 3b8426d340ab730ee3303257ea204ee083b1273a (diff) | |
download | llvm-0c0f765cab4b16eb0342d514584cdf64cabc433a.zip llvm-0c0f765cab4b16eb0342d514584cdf64cabc433a.tar.gz llvm-0c0f765cab4b16eb0342d514584cdf64cabc433a.tar.bz2 |
[ARM] Fix llvm.returnaddress for Thumb1 with R11 frame-pointer (#117735)
When the llvm.returnaddress intrinsic is used, the LR is marked as
live-in to the function, so it must be preserved through the prologue.
This is normally fine, but there is one case for Thumb1 where we use LR
as a temporary in the prologue to set up a frame chain using r11 as the
frame pointer. There are no other registers guaranteed to be free to do
this, so we have to re-load LR from the stack after pushing the callee
saved registers.
Diffstat (limited to 'llvm/lib/Bitcode/Reader/BitcodeReader.cpp')
0 files changed, 0 insertions, 0 deletions