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.

Reply via email to