https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82106
--- Comment #3 from Andrew Waterman <andrew at sifive dot com> --- I believe Alex is correct, in that this is an implementation artifact that can be fixed without breaking the ABI. On Tue, Sep 5, 2017 at 9:26 AM asb at lowrisc dot org < gcc-bugzi...@gcc.gnu.org> wrote: > https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82106 > > --- Comment #2 from Alex Bradbury <asb at lowrisc dot org> --- > Same problem with `-mstrict-align`, which as you say makes this worse. > > I'm actually not sure if this is an ABI-visible issue. The vararg save > area and > it's location is basically required by the ABI due to the dual > restrictions of > 1) keeping saved fp and ra at consistent offsets to s0, and 2) ensure that > argument registers are contiguous with arguments passed via the stack. I > might > be missing something obvious, but I'm not seeing any similar restrictions > that > enforce the use of a save area for arguments split between the stack and a > register. I posted to RISC-V sw-dev for another opinion on this > < > https://groups.google.com/a/groups.riscv.org/d/msg/sw-dev/SsO9Dq7wooI/OioZNHUAAwAJ > >. > It's very possible I'm missing something obvious of course. > > Assuming I'm not missing anything, I don't think it would be ABI-visible to > change gcc so it reconstructs the split argument as a local in a > properly-aligned stack location.