Mercurial > hg > CbC > CbC_gcc
comparison gcc/testsuite/gcc.dg/tree-ssa/ssa-dom-thread-7.c @ 111:04ced10e8804
gcc 7
author | kono |
---|---|
date | Fri, 27 Oct 2017 22:46:09 +0900 |
parents | |
children | 84e7813d76e9 |
comparison
equal
deleted
inserted
replaced
68:561a7518be6b | 111:04ced10e8804 |
---|---|
1 /* { dg-do compile } */ | |
2 /* { dg-options "-O2 -fdump-tree-thread1-stats -fdump-tree-thread2-stats -fdump-tree-dom2-stats -fdump-tree-thread3-stats -fdump-tree-dom3-stats -fdump-tree-vrp2-stats -fno-guess-branch-probability" } */ | |
3 /* { dg-final { scan-tree-dump "Jumps threaded: 16" "thread1" } } */ | |
4 /* { dg-final { scan-tree-dump "Jumps threaded: 9" "thread2" } } */ | |
5 /* { dg-final { scan-tree-dump "Jumps threaded: 3" "thread3" } } */ | |
6 /* { dg-final { scan-tree-dump-not "Jumps threaded" "dom2" } } */ | |
7 /* { dg-final { scan-tree-dump-not "Jumps threaded" "dom3" } } */ | |
8 /* { dg-final { scan-tree-dump-not "Jumps threaded" "vrp2" } } */ | |
9 | |
10 enum STATE { | |
11 S0=0, | |
12 SI, | |
13 S1, | |
14 S2, | |
15 S3, | |
16 S4, | |
17 S5, | |
18 S6 | |
19 }; | |
20 | |
21 int bar (enum STATE s); | |
22 | |
23 enum STATE foo (unsigned char **y, unsigned *c) | |
24 { | |
25 unsigned char *x = *y; | |
26 unsigned char n; | |
27 enum STATE s = S0; | |
28 | |
29 for( ; *x && s != SI; x++ ) | |
30 { | |
31 n = *x; | |
32 if (n == 'x') | |
33 { | |
34 x++; | |
35 break; | |
36 } | |
37 switch(s) | |
38 { | |
39 case S0: | |
40 if(bar(n)) | |
41 s = S3; | |
42 else if( n == 'a' || n == 'b' ) | |
43 s = S1; | |
44 else if( n == 'c' ) | |
45 s = S4; | |
46 else | |
47 { | |
48 s = SI; | |
49 c[SI]++; | |
50 } | |
51 c[S0]++; | |
52 break; | |
53 case S1: | |
54 if(bar(n)) | |
55 { | |
56 s = S3; | |
57 c[S1]++; | |
58 } | |
59 else if( n == 'c' ) | |
60 { | |
61 s = S4; | |
62 c[S1]++; | |
63 } | |
64 else | |
65 { | |
66 s = SI; | |
67 c[S1]++; | |
68 } | |
69 break; | |
70 case S3: | |
71 if( n == 'c' ) | |
72 { | |
73 s = S4; | |
74 c[S3]++; | |
75 } | |
76 else if(!bar(n)) | |
77 { | |
78 s = SI; | |
79 c[S3]++; | |
80 } | |
81 break; | |
82 case S4: | |
83 if( n == 'E' || n == 'e' ) | |
84 { | |
85 s = S2; | |
86 c[S4]++; | |
87 } | |
88 else if(!bar(n)) | |
89 { | |
90 s = SI; | |
91 c[S4]++; | |
92 } | |
93 break; | |
94 case S2: | |
95 if( n == 'a' || n == 'b' ) | |
96 { | |
97 s = S5; | |
98 c[S2]++; | |
99 } | |
100 else | |
101 { | |
102 s = SI; | |
103 c[S2]++; | |
104 } | |
105 break; | |
106 case S5: | |
107 if(bar(n)) | |
108 { | |
109 s = S6; | |
110 c[S5]++; | |
111 } | |
112 else | |
113 { | |
114 s = SI; | |
115 c[S5]++; | |
116 } | |
117 break; | |
118 case S6: | |
119 if(!bar(n)) | |
120 { | |
121 s = SI; | |
122 c[SI]++; | |
123 } | |
124 break; | |
125 default: | |
126 break; | |
127 } | |
128 } | |
129 *y=x; | |
130 return s; | |
131 } |