]> git.ipfire.org Git - thirdparty/gcc.git/blob - gcc/testsuite/gcc.dg/tree-ssa/cswtch.c
Fix profile update in tree_transform_and_unroll_loop
[thirdparty/gcc.git] / gcc / testsuite / gcc.dg / tree-ssa / cswtch.c
1 /* { dg-options "-O2 -fdump-tree-switchconv" } */
2 /* { dg-do run } */
3
4 extern void abort (void);
5
6 static int X, Y;
7
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
42 void assertions(int a, int b)
43 {
44 if (X != a || Y != b)
45 abort();
46
47 return;
48 }
49
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" } } */