/* { dg-options "-O2 -fdump-tree-vrp1" } */ /* { dg-final { scan-tree-dump "case 9 ... 10:" "vrp1" } } */ /* { dg-final { scan-tree-dump "case 17 ... 18:" "vrp1" } } */ /* { dg-final { scan-tree-dump "case 27 ... 30:" "vrp1" } } */ extern void foo (void); extern void bar (void); void test1 (int i) { if (i != 7 && i != 8) switch (i) { case 1: case 2: foo (); break; case 7: /* Redundant label. */ case 8: /* Redundant label. */ case 9: case 10: bar (); break; } } void test3 (int i) { if (i != 19 && i != 20) switch (i) { case 1: case 2: foo (); break; case 17: case 18: case 19: /* Redundant label. */ case 20: /* Redundant label. */ bar (); break; } } void test2 (int i) { if (i != 28 && i != 29) switch (i) { case 1: case 2: foo (); break; /* No redundancy. */ case 27: case 28: case 29: case 30: bar (); break; } }