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.