/* { dg-do compile { target { { x86_64-*-* aarch64-*-* ia64-*-* powerpc64-*-* } && lp64 } } } */ /* { dg-options "-O2 -fdump-tree-switchlower1 --param case-values-threshold=4" } */ int global; int foo (int x) { switch (x) { case 0: case 10: case 1000: case 1010: case 1025 ... 1030: return 1; default: return 0; } } /* { dg-final { scan-tree-dump ";; GIMPLE switch case clusters: 0 10 BT:1000-1030" "switchlower1" } } */ int foo2 (int x) { switch (x) { case -100: case 100: case 1000: case 10000: case 100000: return 1; default: return 0; } } /* { dg-final { scan-tree-dump ";; GIMPLE switch case clusters: -100 100 1000 10000 100000" "switchlower1" } } */ int foo3 (int x) { switch (x) { case 0: case 10: case 20: global += 1; return 3; case 30: case 33 ... 55: case 57: return 4; case 60 ... 62: return 1; default: return 0; } } /* { dg-final { scan-tree-dump ";; GIMPLE switch case clusters: BT:0-62" "switchlower1" } } */ int foo4 (int x) { switch (x) { case -100: case 10: case 20: global += 1; return 3; case 30: case 33 ... 55: case 57: return 4; case 60 ... 62: return 1; case 600 ... 700: return 12; default: return 0; } } /* { dg-final { scan-tree-dump ";; GIMPLE switch case clusters: -100 BT:10-62 600-700" "switchlower1" } } */ int foo5 (int x) { switch (x) { case 10: case 20: global += 1; return 3; case 30: case 33 ... 55: case 57: return 4; case 60 ... 62: return 1; case 600 ... 700: return 12; case 1000 ... 1010: case 1012: return 333; case 1019: case 1021: return 9; case 111111: return 3; default: return 0; } } /* { dg-final { scan-tree-dump ";; GIMPLE switch case clusters: BT:10-62 600-700 JT:1000-1021 111111" "switchlower1" } } */