Closed
Description
Problem similar to #97285, opening new issue since the RISC-V one is closed. I'm less familiar with ARM32 so I can't point to the ABI wording that specifies empty struct handling.
struct Empty {};
int after_empty(int i0, Empty e, int i1)
{
return i1;
}
int after_empty_on_stack(
int i0, int i1, int i2, int i3, int i4, int i5, int i6, int i7, Empty e, int i8)
{
return i8;
}
after_empty(int, Empty, int):
mov r0, r1
bx lr
after_empty_on_stack(int, int, int, int, int, int, int, int, Empty, int):
ldr r0, [sp, #16]
bx lr
GCC passes i1
and i8
in r2
and [sp, #20]
respectively. Comparison on Godbolt
ARM64 on Clang looks ok, it matches GCC and passes i1
in w2
Clang version: 18.1.0 and Godbolt "trunk" at the time of filing this issue (2024-07-09).
cc @svs-quic @efriedma-quic
Part of dotnet/runtime#84834