Merge with trank @ 137446
[official-gcc.git] / gcc / testsuite / gcc.dg / tree-ssa / cswtch.c
blob06710f2179331ef82f27bbc8e5742bbdc41699f3
1 /* { dg-do compile } */
2 /* { dg-options "-O2 -fdump-tree-switchconv" } */
3 /* { dg-do run } */
5 extern void abort (void);
7 static int X, Y;
9 int check(int param)
11 int a = 0;
12 int b = 1;
14 switch (param)
16 case -2:
17 a = 0;
18 b = -1;
19 break;
20 case 1:
21 case 2:
22 a = 8;
23 b = 6;
24 break;
25 case 3:
26 a = 9;
27 b = 5;
28 break;
29 case 6:
30 a = 10;
31 b = 4;
32 break;
33 default:
34 a = 16;
35 b = 1;
38 X = a;
39 Y = b;
40 return 0;
43 void assertions(int a, int b)
45 if (X != a || Y != b)
46 abort();
48 return;
51 int main ()
53 check (-10);
54 assertions (16, 1);
56 check (-2);
57 assertions (0, -1);
59 check(1);
60 assertions (8, 6);
62 check(2);
63 assertions (8, 6);
65 check(3);
66 assertions (9, 5);
68 check(5);
69 assertions (16, 1);
71 check(6);
72 assertions (10, 4);
74 check(12);
75 assertions (16, 1);
77 return 0;
80 /* { dg-final { scan-tree-dump "Switch converted" "switchconv" } } */
81 /* { dg-final { cleanup-tree-dump "switchconv" } } */