https://gcc.gnu.org/bugzilla/show_bug.cgi?id=102148

--- Comment #5 from Bill Schmidt <wschmidt at gcc dot gnu.org> ---
For anyone running into this problem and wondering about the resolution:

It is a matter of some confusion how homogeneous aggregates are mapped to the
parameter save area. This came up recently with
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=102148. It would be helpful to add
some clarifying text for the following points.

(1) The parameter save area layout is completely independent from the rules for
passing homogeneous aggregates in registers.
(2) The size of a homogeneous aggregate parameter in the parameter save area is
the size of that aggregate by normal rules of alignment and padding. This means
that the parameter save area for a homogeneous aggregate of 32-bit floats takes
up less room than the amount of register space consumed.
(3) The number of GPRs skipped is based upon the size of the aggregate in the
parameter save area.

An example of this exists (Figure 2.26 in revision 1.5), but it is easy to have
difficulty spotting the information there.

Reply via email to