Fix issue #37, Algorithm in section 2.2.3.1 has some alignment issues.

Signed-off-by: Bill Schmidt <wschmidt@linux.vnet.ibm.com>
pull/92/head
Bill Schmidt 8 years ago
parent eb988bdc6b
commit 4bd8693b45

@ -5718,12 +5718,12 @@ aggregate:
if (homogeneous(argument,float) and regs_needed(members(argument)) &lt;=8) if (homogeneous(argument,float) and regs_needed(members(argument)) &lt;=8)
if (register_type_used (type (argument)) == vr) if (register_type_used (type (argument)) == vr)
goto use_vrs; goto use_vrs;
n_fregs = n_fregs_for_type(member_type(argument,0)) n_fregs = n_fregs_for_type(member_type(argument,0))
agg_size = members(argument) * n_fregs agg_size = members(argument) * n_fregs
reg_size = min(agg_size, 15-fr) reg_size = min(agg_size, 15-fr)
pass(FPR,fr,first_n_DW(argument,reg_size) pass(FPR,fr,first_n_DW(argument,reg_size)
fr += reg_size; fr += reg_size;
gr += size_in_DW (first_n_DW(argument,reg_size)) gr += size_in_DW (first_n_DW(argument,reg_size))
if remaining_members if remaining_members
argument = after_n_DW(argument,reg_size)) argument = after_n_DW(argument,reg_size))

Loading…
Cancel
Save