]> git.ipfire.org Git - thirdparty/gcc.git/blob - gcc/testsuite/gcc.dg/tree-ssa/vrp109.c
Fix profile update in tree_transform_and_unroll_loop
[thirdparty/gcc.git] / gcc / testsuite / gcc.dg / tree-ssa / vrp109.c
1 /* { dg-options "-O2 -fdump-tree-vrp1" } */
2 /* { dg-final { scan-tree-dump "case 9 ... 10:" "vrp1" } } */
3 /* { dg-final { scan-tree-dump "case 17 ... 18:" "vrp1" } } */
4 /* { dg-final { scan-tree-dump "case 27 ... 30:" "vrp1" } } */
5
6 extern void foo (void);
7 extern void bar (void);
8
9 void
10 test1 (int i)
11 {
12 if (i != 7 && i != 8)
13 switch (i)
14 {
15 case 1:
16 case 2:
17 foo ();
18 break;
19 case 7: /* Redundant label. */
20 case 8: /* Redundant label. */
21 case 9:
22 case 10:
23 bar ();
24 break;
25 }
26 }
27
28 void
29 test3 (int i)
30 {
31 if (i != 19 && i != 20)
32 switch (i)
33 {
34 case 1:
35 case 2:
36 foo ();
37 break;
38 case 17:
39 case 18:
40 case 19: /* Redundant label. */
41 case 20: /* Redundant label. */
42 bar ();
43 break;
44 }
45 }
46
47 void
48 test2 (int i)
49 {
50 if (i != 28 && i != 29)
51 switch (i)
52 {
53 case 1:
54 case 2:
55 foo ();
56 break;
57 /* No redundancy. */
58 case 27:
59 case 28:
60 case 29:
61 case 30:
62 bar ();
63 break;
64 }
65 }