hard_regno = ira_class_hard_regs[rclass][i];
if (! overlaps_hard_reg_set_p (conflict_set,
PSEUDO_REGNO_MODE (regno), hard_regno)
- && targetm.hard_regno_mode_ok (hard_regno,
- PSEUDO_REGNO_MODE (regno))
+ && targetm.hard_regno_mode_ok (hard_regno, PSEUDO_REGNO_MODE (regno))
/* We cannot use prohibited_class_mode_regs for all classes
because it is not defined for all classes. */
&& (ira_allocno_class_translate[rclass] != rclass
|| ! TEST_HARD_REG_BIT (ira_prohibited_class_mode_regs
- [rclass][PSEUDO_REGNO_MODE (regno)],
+ [rclass][biggest_mode],
hard_regno))
&& ! TEST_HARD_REG_BIT (impossible_start_hard_regs, hard_regno)
&& (nregs_diff == 0
--- /dev/null
+/* { dg-do compile { target { ! ia32 } } } */
+/* { dg-options "-O -favoid-store-forwarding -mavx10.1 -mprefer-avx128 --param=store-forwarding-max-distance=128 -Wno-psabi" } */
+typedef __attribute__((__vector_size__ (64))) _Decimal32 V;
+
+void
+bar (float, float, float, float, float, _Complex, float, float, float,
+ _BitInt(1023), _BitInt (1023), float, float, float, float, float, float,
+ float, float, float, float, float, float, _Decimal64, float, float, float,
+ V, float, _Decimal64);
+
+void
+foo ()
+{
+ bar (0, 0, 0, 0, 0, 0, 0, __builtin_nand64 ("nan"), 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, (V){}, 0, 0);
+}