Backport from mainline
2018-06-19 Segher Boessenkool <segher@kernel.crashing.org>
PR target/86197
* config/rs6000/rs6000.md (rs6000_discover_homogeneous_aggregate): An
ieee128 argument takes up only one (vector) register, not two (floating
point) registers.
From-SVN: r263479
+2018-08-10 Segher Boessenkool <segher@kernel.crashing.org>
+
+ Backport from mainline
+ 2018-06-19 Segher Boessenkool <segher@kernel.crashing.org>
+
+ PR target/86197
+ * config/rs6000/rs6000.md (rs6000_discover_homogeneous_aggregate): An
+ ieee128 argument takes up only one (vector) register, not two (floating
+ point) registers.
+
2018-07-29 John David Anglin <danglin@gcc.gnu.org>
* config/pa/pa.c (pa_output_addr_vec): Align address table.
if (field_count > 0)
{
- int n_regs = (SCALAR_FLOAT_MODE_P (field_mode) ?
- (GET_MODE_SIZE (field_mode) + 7) >> 3 : 1);
+ int reg_size = ALTIVEC_OR_VSX_VECTOR_MODE (field_mode) ? 16 : 8;
+ int field_size = ROUND_UP (GET_MODE_SIZE (field_mode), reg_size);
/* The ELFv2 ABI allows homogeneous aggregates to occupy
up to AGGR_ARG_NUM_REG registers. */
- if (field_count * n_regs <= AGGR_ARG_NUM_REG)
+ if (field_count * field_size <= AGGR_ARG_NUM_REG * reg_size)
{
if (elt_mode)
*elt_mode = field_mode;