@@ -1119,7 +1119,8 @@ get_all_loop_exits (basic_block bb)
/* If bb is empty, and we're skipping to loop exits, then
consider bb as a possible gate to the inner loop now. */
while (sel_bb_empty_or_nop_p (bb)
- && in_current_region_p (bb))
+ && in_current_region_p (bb)
+ && EDGE_COUNT (bb->succs) > 0)
{
bb = single_succ (bb);
new file mode 100644
@@ -0,0 +1,16 @@
+/* { dg-do compile { target powerpc*-*-* ia64-*-* x86_64-*-* } } */
+/* { dg-options "-O -fschedule-insns2 -fsel-sched-pipelining
-fsel-sched-pipelining-outer-loops -fselective-scheduling2 --param
max-sched-extend-regions-iters=2" } */
+
+void foo (int y)
+{
+ switch (y)
+ {
+ case 3:
+ case 5:
+ case 7:
+ case 11:
+ break;
+ default:
+ __builtin_unreachable ();
+ }