[all-commits] [llvm/llvm-project] 0c0f76: [ARM] Fix llvm.returnaddress for Thumb1 with R11 f...

Oliver Stannard via All-commits all-commits at lists.llvm.org
Thu Nov 28 01:38:19 PST 2024


  Branch: refs/heads/main
  Home:   https://github.com/llvm/llvm-project
  Commit: 0c0f765cab4b16eb0342d514584cdf64cabc433a
      https://github.com/llvm/llvm-project/commit/0c0f765cab4b16eb0342d514584cdf64cabc433a
  Author: Oliver Stannard <oliver.stannard at arm.com>
  Date:   2024-11-28 (Thu, 28 Nov 2024)

  Changed paths:
    M llvm/lib/Target/ARM/ARMAsmPrinter.cpp
    M llvm/lib/Target/ARM/Thumb1FrameLowering.cpp
    M llvm/test/CodeGen/Thumb/frame-chain.ll
    A llvm/test/CodeGen/Thumb/returnaddress.ll

  Log Message:
  -----------
  [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.



To unsubscribe from these emails, change your notification settings at https://github.com/llvm/llvm-project/settings/notifications


More information about the All-commits mailing list