Previously, since these aggregates are > 2*XLen, Clang would think they
were being returned indirectly and thus would decrease the number of
available GPRs available by 1. For long argument lists this could lead
to a struct argument incorrectly being passed indirectly.
Details
Details
Diff Detail
Diff Detail
- Repository
- rG LLVM Github Monorepo
Event Timeline
Comment Actions
The tests in clang/test/CodeGen/riscv32-ilp32d-abi.c already include lots of cases that include flattening.
I suppose the one place they lack tests is probably a complex type passed within a struct, which would be good to add @jrtc27. Though, we should probably greatly expand the testing of _Complex within ABIs.
Comment Actions
This looks good to me, thanks James. I had a closer step through of the logic here to convince myself.