[all-commits] [llvm/llvm-project] 488821: [ARM] Do not emit unwind tables when saving LR aro...

ostannard via All-commits all-commits at lists.llvm.org
Thu Dec 14 06:46:26 PST 2023


  Branch: refs/heads/main
  Home:   https://github.com/llvm/llvm-project
  Commit: 4888218d0312f9126d8dd657d2ed568bf0572e9a
      https://github.com/llvm/llvm-project/commit/4888218d0312f9126d8dd657d2ed568bf0572e9a
  Author: ostannard <oliver.stannard at arm.com>
  Date:   2023-12-14 (Thu, 14 Dec 2023)

  Changed paths:
    M llvm/lib/Target/ARM/ARMBaseInstrInfo.cpp
    M llvm/lib/Target/ARM/ARMMachineFunctionInfo.cpp
    M llvm/lib/Target/ARM/ARMMachineFunctionInfo.h
    M llvm/lib/Target/ARM/ARMTargetMachine.cpp
    M llvm/lib/Target/ARM/ARMTargetMachine.h
    A llvm/test/CodeGen/ARM/machine-outliner-noreturn.mir

  Log Message:
  -----------
  [ARM] Do not emit unwind tables when saving LR around outlined call (#69611)

In some cases, the machine outliner needs to preserve LR across an
outlined call by pushing it onto the stack. Previously, this also
generated unwind table instructions, which is incorrect because EHABI
unwind tables cannot represent different stack frames a different points
in the function, so the extra unwind info applied to the entire
function.

The outliner code already avoided generating CFI instructions, but EHABI
unwind data is generated later from the actual instructions, so we need
to avoid using the FrameSetup and FrameDestroy flags to prevent unwind
data being generated.




More information about the All-commits mailing list