1 /* { dg-options "-O2 -fdump-tree-switchconv" } */
2 /* { dg-do run } */
3 
4 extern void abort (void);
5 
6 static int X, Y;
7 
check(int param)8 int check(int param)
9 {
10   int a = 0;
11   int b = 1;
12 
13   switch (param)
14     {
15     case -2:
16       a = 0;
17       b = -1;
18       break;
19     case 1:
20     case 2:
21       a = 8;
22       b = 6;
23       break;
24     case 3:
25       a = 9;
26       b = 5;
27       break;
28     case 6:
29       a = 10;
30       b = 4;
31       break;
32     default:
33       a = 16;
34       b = 1;
35     }
36 
37   X = a;
38   Y = b;
39   return 0;
40 }
41 
assertions(int a,int b)42 void assertions(int a, int b)
43 {
44   if (X != a || Y != b)
45     abort();
46 
47   return;
48 }
49 
main()50 int main ()
51 {
52   check (-10);
53   assertions (16, 1);
54 
55   check (-2);
56   assertions (0, -1);
57 
58   check(1);
59   assertions (8, 6);
60 
61   check(2);
62   assertions (8, 6);
63 
64   check(3);
65   assertions (9, 5);
66 
67   check(5);
68   assertions (16, 1);
69 
70   check(6);
71   assertions (10, 4);
72 
73   check(12);
74   assertions (16, 1);
75 
76   return 0;
77 }
78 
79 /* { dg-final { scan-tree-dump "Switch converted" "switchconv" } } */
80