+2016-07-08 Vladimir Makarov <vmakarov@redhat.com>
+
+ PR rtl-optimization/71621
+ * lra-constraints.c (process_alt_operands): Check combination of
+ reg class and mode.
+
2016-06-25 Jason Merrill <jason@redhat.com>
Richard Biener <rguenther@suse.de>
goto fail;
}
+ if (this_alternative != NO_REGS)
+ {
+ HARD_REG_SET available_regs;
+
+ COPY_HARD_REG_SET (available_regs,
+ reg_class_contents[this_alternative]);
+ AND_COMPL_HARD_REG_SET
+ (available_regs,
+ ira_prohibited_class_mode_regs[this_alternative][mode]);
+ AND_COMPL_HARD_REG_SET (available_regs, lra_no_alloc_regs);
+ if (hard_reg_set_empty_p (available_regs))
+ {
+ /* There are no hard regs holding a value of given
+ mode. */
+ if (offmemok)
+ {
+ this_alternative = NO_REGS;
+ if (lra_dump_file != NULL)
+ fprintf (lra_dump_file,
+ " %d Using memory because of"
+ " a bad mode: reject+=2\n",
+ nop);
+ reject += 2;
+ }
+ else
+ {
+ if (lra_dump_file != NULL)
+ fprintf (lra_dump_file,
+ " alt=%d: Wrong mode -- refuse\n",
+ nalt);
+ goto fail;
+ }
+ }
+ }
+
/* If not assigned pseudo has a class which a subset of
required reg class, it is a less costly alternative
as the pseudo still can get a hard reg of necessary
+2016-07-08 Vladimir Makarov <vmakarov@redhat.com>
+
+ PR rtl-optimization/71621
+ * gcc.target/i386/pr71621-1.c: New.
+ * gcc.target/i386/pr71621-2.c: New.
+
2016-07-08 Cesar Philippidis <cesar@codesourcery.com>
* gfortran.dg/goacc/pr71704.f90: New test.
--- /dev/null
+/* { dg-do compile } */
+/* { dg-options "-O2 -w -ftree-vectorize -mavx2" } */
+
+int cn;
+int *li;
+
+void
+y8 (void)
+{
+ int gv;
+ int *be = &gv;
+ short int v4 = 2;
+
+ while (*li != 0)
+ {
+ int sy;
+ for (sy = 0; sy < 5; ++sy)
+ {
+ int **t6 = &be;
+ gv |= sy ? 0 : v4;
+ if (gv != 0)
+ ++gv;
+ t6 = &cn;
+ if (gv != 0)
+ *t6 = 0;
+ }
+ for (gv = 0; gv < 24; ++gv)
+ v4 |= 1 <= 1 % 0;
+ ++(*li);
+ }
+}