2017-05-30 Jakub Jelinek <jakub@redhat.com>
Backported from mainline
+ 2017-03-24 Jakub Jelinek <jakub@redhat.com>
+
+ PR rtl-optimization/80112
+ * loop-doloop.c (doloop_condition_get): Don't check condition
+ if cmp isn't SET with IF_THEN_ELSE src.
+
2017-03-22 Jakub Jelinek <jakub@redhat.com>
PR c++/80129
}
else
inc = PATTERN (prev_insn);
- /* We expect the condition to be of the form (reg != 0) */
- cond = XEXP (SET_SRC (cmp), 0);
- if (GET_CODE (cond) != NE || XEXP (cond, 1) != const0_rtx)
- return 0;
+ if (GET_CODE (cmp) == SET && GET_CODE (SET_SRC (cmp)) == IF_THEN_ELSE)
+ {
+ /* We expect the condition to be of the form (reg != 0) */
+ cond = XEXP (SET_SRC (cmp), 0);
+ if (GET_CODE (cond) != NE || XEXP (cond, 1) != const0_rtx)
+ return 0;
+ }
}
else
{
2017-05-30 Jakub Jelinek <jakub@redhat.com>
Backported from mainline
+ 2017-03-24 Jakub Jelinek <jakub@redhat.com>
+
+ PR rtl-optimization/80112
+ * gcc.dg/pr80112.c: New test.
+
2017-03-22 Jakub Jelinek <jakub@redhat.com>
PR c++/80141
--- /dev/null
+/* PR rtl-optimization/80112 */
+/* { dg-do compile } */
+/* { dg-options "-Os -fmodulo-sched" } */
+
+void **a;
+
+void
+foo (int c)
+{
+ void *d[] = {&&e, &&f};
+ a = d;
+ switch (c)
+ {
+ f:
+ c = 9;
+ /* FALLTHRU */
+ case 9:
+ goto *a++;
+ e:;
+ }
+}