[all-commits] [llvm/llvm-project] d7a981: [AArch64] Fix variadic tail-calls on ARM64EC (#79774)
Billy Laws via All-commits
all-commits at lists.llvm.org
Tue Mar 12 17:12:15 PDT 2024
Branch: refs/heads/release/18.x
Home: https://github.com/llvm/llvm-project
Commit: d7a9810f9c14e6598265ab41519be9b861228450
https://github.com/llvm/llvm-project/commit/d7a9810f9c14e6598265ab41519be9b861228450
Author: Billy Laws <blaws05 at gmail.com>
Date: 2024-03-11 (Mon, 11 Mar 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.
Commit: 42c599ab365b6d413d7e35a40f6e4ab98f523b67
https://github.com/llvm/llvm-project/commit/42c599ab365b6d413d7e35a40f6e4ab98f523b67
Author: Billy Laws <blaws05 at gmail.com>
Date: 2024-03-11 (Mon, 11 Mar 2024)
Changed paths:
M llvm/lib/Target/AArch64/AArch64Arm64ECCallLowering.cpp
M llvm/test/CodeGen/AArch64/arm64ec-entry-thunks.ll
Log Message:
-----------
[AArch64] Fix generated types for ARM64EC variadic entry thunk targets (#80595)
ISel handles filling in x4/x5 when calling variadic functions as they
don't correspond to the 5th/6th X64 arguments but rather to the end of
the shadow space on the stack and the size in bytes of all stack
parameters (ignored and written as 0 for calls from entry thunks).
Will PR a follow up with ISel handling after this is merged.
Commit: 89d543227a324d9925c68caf5d75c8c1e46c02a4
https://github.com/llvm/llvm-project/commit/89d543227a324d9925c68caf5d75c8c1e46c02a4
Author: Billy Laws <blaws05 at gmail.com>
Date: 2024-03-11 (Mon, 11 Mar 2024)
Changed paths:
M llvm/lib/Target/AArch64/AArch64Arm64ECCallLowering.cpp
M llvm/lib/Target/AArch64/AArch64CallingConvention.td
M llvm/test/CodeGen/AArch64/arm64ec-entry-thunks.ll
Log Message:
-----------
[AArch64] Skip over shadow space for ARM64EC entry thunk variadic calls (#80994)
When in an entry thunk the x64 SP is passed in x4 but this cannot be
directly passed through since x64 varargs calls have a 32 byte shadow
store at SP followed by the in-stack parameters. ARM64EC varargs calls
on the other hand expect x4 to point to the first in-stack parameter.
Compare: https://github.com/llvm/llvm-project/compare/ea6c457b8dd2...89d543227a32
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