[all-commits] [llvm/llvm-project] 00e4a4: [ARM] R11 not pushed adjacent to link register wit...

James Westwood via All-commits all-commits at lists.llvm.org
Mon Mar 4 04:00:49 PST 2024


  Branch: refs/heads/main
  Home:   https://github.com/llvm/llvm-project
  Commit: 00e4a4197137410129d4725ffb82bae9ce44bdde
      https://github.com/llvm/llvm-project/commit/00e4a4197137410129d4725ffb82bae9ce44bdde
  Author: James Westwood <james.westwood at arm.com>
  Date:   2024-03-04 (Mon, 04 Mar 2024)

  Changed paths:
    M llvm/lib/Target/ARM/ARMBaseRegisterInfo.cpp
    M llvm/lib/Target/ARM/ARMFrameLowering.cpp
    M llvm/lib/Target/ARM/ARMSubtarget.cpp
    M llvm/lib/Target/ARM/ARMSubtarget.h
    M llvm/lib/Target/ARM/Thumb1FrameLowering.cpp
    A llvm/test/CodeGen/Thumb2/pacbti-m-frame-chain.ll

  Log Message:
  -----------
  [ARM] R11 not pushed adjacent to link register with PAC-M and AAPCS frame chain fix (#82801)

When code for M class architecture was compiled with AAPCS and PAC
enabled, the frame pointer, r11, was not pushed to the stack adjacent to
the link register. Due to PAC being enabled, r12 was placed between r11
and lr. This patch fixes this by adding an extra case to the already
existing code that splits the GPR push in two when R11 is the frame
pointer and certain paremeters are met. The differential revision for
this previous change can be found here:
https://reviews.llvm.org/D125649. This now ensures that r11 and lr are
pushed in a separate push instruction to the other GPRs when PAC and
AAPCS are enabled, meaning the frame pointer and link register are now
pushed onto the stack adjacent to each other.



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