[all-commits] [llvm/llvm-project] c761b4: [AArch64] Fix variadic tail-calls on ARM64EC (#79774)

Billy Laws via All-commits all-commits at lists.llvm.org
Tue Jan 30 18:32:28 PST 2024


  Branch: refs/heads/main
  Home:   https://github.com/llvm/llvm-project
  Commit: c761b4a5e4cc003a2c850898e1dc67d2637cfb0c
      https://github.com/llvm/llvm-project/commit/c761b4a5e4cc003a2c850898e1dc67d2637cfb0c
  Author: Billy Laws <blaws05 at gmail.com>
  Date:   2024-01-30 (Tue, 30 Jan 2024)

  Changed paths:
    M llvm/lib/Target/AArch64/AArch64ISelLowering.cpp
    M llvm/test/CodeGen/AArch64/arm64ec-varargs.ll
    M llvm/test/CodeGen/AArch64/vararg-tallcall.ll

  Log Message:
  -----------
  [AArch64] Fix variadic tail-calls on ARM64EC (#79774)

ARM64EC varargs calls expect that x4 = sp at entry, special handling is
needed to ensure this with tail calls since they occur after the
epilogue and the x4 write happens before.

I tried going through AArch64MachineFrameLowering for this, hoping to
avoid creating the dummy object but this was the best I could do since
the stack info that uses isn't populated at this stage,
CreateFixedObject also explicitly forbids 0 sized objects.




More information about the All-commits mailing list