+2011-04-07 Andrey Belevantsev <abel@ispras.ru>
+
+ Backport from mainline
+ 2010-12-14 Alexander Monakov <amonakov@ispras.ru>
+
+ PR rtl-optimization/46875
+ * sched-vis.c (print_pattern): Dump "sequence" for ADDR_VECs.
+ * sel-sched-ir.c (bb_has_removable_jump_to_p): Forbid table jumps.
+
2011-04-07 Andrey Belevantsev <abel@ispras.ru>
Backport from mainline
sprintf (buf, "asm {%s}", XSTR (x, 0));
break;
case ADDR_VEC:
- break;
+ /* Fall through. */
case ADDR_DIFF_VEC:
print_value (buf, XEXP (x, 0), verbose);
break;
static bool
bb_has_removable_jump_to_p (basic_block jump_bb, basic_block dest_bb)
{
- if (!onlyjump_p (BB_END (jump_bb)))
+ if (!onlyjump_p (BB_END (jump_bb))
+ || tablejump_p (BB_END (jump_bb), NULL, NULL))
return false;
/* Several outgoing edges, abnormal edge or destination of jump is
+2011-04-07 Andrey Belevantsev <abel@ispras.ru>
+
+ Backport from mainline
+ 2010-12-14 Alexander Monakov <amonakov@ispras.ru>
+
+ PR rtl-optimization/46875
+ * gcc.dg/pr46875.c: New.
+
2011-04-07 Andrey Belevantsev <abel@ispras.ru>
Backport from mainline
--- /dev/null
+/* { dg-do compile { target powerpc*-*-* ia64-*-* x86_64-*-* } } */
+/* { dg-options "-Os -fselective-scheduling2" } */
+
+long
+foo (int x, long *y)
+{
+ long a = 0;
+ switch (x)
+ {
+ case 0:
+ a = *y;
+ break;
+ case 1:
+ a = *y;
+ break;
+ case 2:
+ a = *y;
+ break;
+ case 3:
+ a = *y;
+ break;
+ case 4:
+ a = *y;
+ break;
+ }
+ return a;
+}