[all-commits] [llvm/llvm-project] 678944: [AArch64] Fix a corner case with large stack alloc...

ssijaric-nv via All-commits all-commits at lists.llvm.org
Sat Jan 18 22:09:47 PST 2025


  Branch: refs/heads/main
  Home:   https://github.com/llvm/llvm-project
  Commit: 6789442eb2e1ed92b2157e96e9e9eafed5c53f17
      https://github.com/llvm/llvm-project/commit/6789442eb2e1ed92b2157e96e9e9eafed5c53f17
  Author: ssijaric-nv <ssijaric at nvidia.com>
  Date:   2025-01-18 (Sat, 18 Jan 2025)

  Changed paths:
    M llvm/lib/Target/AArch64/AArch64FrameLowering.cpp
    M llvm/lib/Target/AArch64/AArch64FrameLowering.h
    A llvm/test/CodeGen/AArch64/aarch64-large-stack-spbump.mir

  Log Message:
  -----------
  [AArch64] Fix a corner case with large stack allocation (#122038)

In the unlikely case where the stack size is greater than 4GB, we may run into
the situation where the local stack size and the callee saved registers stack
size get combined incorrectly when restoring the callee saved registers. This
happens because the stack size in shouldCombineCSRLocalStackBumpInEpilogue
is represented as an 'unsigned', but is passed in as an 'int64_t'. We end up with
something like

$fp, $lr = frame-destroy LDPXi $sp, 536870912

This change just makes 'shouldCombineCSRLocalStackBumpInEpilogue' match
'shouldCombineCSRLocalStackBump' where 'StackBumpBytes' is an 'uint64_t'



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