6
6
7
7
void simple_loops () { // CHECK: @LINE|{{.*}}simple_loops()
8
8
int i ;
9
- for (i = 0 ; i < 100 ; ++ i ) { // BRCOV: Branch ([[@LINE]]:15): [True: [[C100: 100|1 ]], False: 1]
9
+ for (i = 0 ; i < 100 ; ++ i ) { // BRCOV: Branch ([[@LINE]]:15): [True: [[#min(C, 100) ]], False: 1]
10
10
}
11
- while (i > 0 ) // BRCOV: Branch ([[@LINE]]:10): [True: [[C100 ]], False: 1]
11
+ while (i > 0 ) // BRCOV: Branch ([[@LINE]]:10): [True: [[#min(C,100) ]], False: 1]
12
12
i -- ;
13
- do {} while (i ++ < 75 ); // BRCOV: Branch ([[@LINE]]:16): [True: [[C75:75|1 ]], False: 1]
13
+ do {} while (i ++ < 75 ); // BRCOV: Branch ([[@LINE]]:16): [True: [[#min(C,75) ]], False: 1]
14
14
15
15
}
16
16
17
17
void conditionals () { // CHECK: @LINE|{{.*}}conditionals()
18
- for (int i = 0 ; i < 100 ; ++ i ) {//BRCOV: Branch ([[@LINE]]:19): [True: [[C100 ]], False: 1]
19
- if (i % 2 ) { // BRCOV: Branch ([[@LINE]]:9): [True: [[C50:50|1 ]], False: [[C50 ]]]
20
- if (i ) {} // BRCOV: Branch ([[@LINE]]:11): [True: [[C50 ]], False: 0]
21
- } else if (i % 3 ) { // BRCOV: Branch ([[@LINE]]:16): [True: [[C33:33|1 ]], False: [[C17:17|1 ]]]
22
- if (i ) {} // BRCOV: Branch ([[@LINE]]:11): [True: [[C33 ]], False: 0]
18
+ for (int i = 0 ; i < 100 ; ++ i ) {//BRCOV: Branch ([[@LINE]]:19): [True: [[#min(C,100) ]], False: 1]
19
+ if (i % 2 ) { // BRCOV: Branch ([[@LINE]]:9): [True: [[#min(C,50) ]], False: [[#min(C,50) ]]]
20
+ if (i ) {} // BRCOV: Branch ([[@LINE]]:11): [True: [[#min(C,50) ]], False: 0]
21
+ } else if (i % 3 ) { // BRCOV: Branch ([[@LINE]]:16): [True: [[#min(C,33) ]], False: [[#min(C,17) ]]]
22
+ if (i ) {} // BRCOV: Branch ([[@LINE]]:11): [True: [[#min(C,33) ]], False: 0]
23
23
} else {
24
- if (i ) {} // BRCOV: Branch ([[@LINE]]:11): [True: [[C16:16|1 ]], False: 1]
24
+ if (i ) {} // BRCOV: Branch ([[@LINE]]:11): [True: [[#min(C,16) ]], False: 1]
25
25
}
26
- // BRCOV: Branch ([[@LINE+1]]:9): [True: [[C100 ]], Folded]
27
- if (1 && i ) {} // BRCOV: Branch ([[@LINE]]:14): [True: [[C99:99|1 ]], False: 1]
28
- if (0 || i ) {} // BRCOV: Branch ([[@LINE]]:9): [Folded, False: [[C100 ]]]
29
- } // BRCOV: Branch ([[@LINE-1]]:14): [True: [[C99 ]], False: 1]
26
+ // BRCOV: Branch ([[@LINE+1]]:9): [True: [[#min(C,100) ]], Folded]
27
+ if (1 && i ) {} // BRCOV: Branch ([[@LINE]]:14): [True: [[#min(C,99) ]], False: 1]
28
+ if (0 || i ) {} // BRCOV: Branch ([[@LINE]]:9): [Folded, False: [[#min(C,100) ]]]
29
+ } // BRCOV: Branch ([[@LINE-1]]:14): [True: [[#min(C,99) ]], False: 1]
30
30
31
31
}
32
32
@@ -35,22 +35,22 @@ void early_exits() { // CHECK: @LINE|{{.*}}early_exits()
35
35
36
36
if (i ) {} // BRCOV: Branch ([[@LINE]]:7): [True: 0, False: 1]
37
37
38
- while (i < 100 ) { // BRCOV: Branch ([[@LINE]]:10): [True: [[C51:51|1 ]], False: 0]
38
+ while (i < 100 ) { // BRCOV: Branch ([[@LINE]]:10): [True: [[#min(C,51) ]], False: 0]
39
39
i ++ ;
40
- if (i > 50 ) // BRCOV: Branch ([[@LINE]]:9): [True: 1, False: [[C50 ]]]
40
+ if (i > 50 ) // BRCOV: Branch ([[@LINE]]:9): [True: 1, False: [[#min(C,50) ]]]
41
41
break ;
42
- if (i % 2 ) // BRCOV: Branch ([[@LINE]]:9): [True: [[C25:25|1 ]], False: [[C25 ]]]
42
+ if (i % 2 ) // BRCOV: Branch ([[@LINE]]:9): [True: [[#min(C,25) ]], False: [[#min(C,25) ]]]
43
43
continue ;
44
44
}
45
45
46
46
if (i ) {} // BRCOV: Branch ([[@LINE]]:7): [True: 1, False: 0]
47
47
48
48
do {
49
- if (i > 75 ) // BRCOV: Branch ([[@LINE]]:9): [True: 1, False: [[C25 ]]]
49
+ if (i > 75 ) // BRCOV: Branch ([[@LINE]]:9): [True: 1, False: [[#min(C,25) ]]]
50
50
return ;
51
51
else
52
52
i ++ ;
53
- } while (i < 100 ); // BRCOV: Branch ([[@LINE]]:12): [True: [[C25 ]], False: 0]
53
+ } while (i < 100 ); // BRCOV: Branch ([[@LINE]]:12): [True: [[#min(C,25) ]], False: 0]
54
54
55
55
if (i ) {} // BRCOV: Branch ([[@LINE]]:7): [True: 0, False: 0]
56
56
@@ -80,7 +80,7 @@ void jumps() { // CHECK: @LINE|{{.*}}jumps()
80
80
second :
81
81
third :
82
82
i ++ ;
83
- if (i < 3 ) // BRCOV: Branch ([[@LINE]]:7): [True: [[C2:2|1 ]], False: 1]
83
+ if (i < 3 ) // BRCOV: Branch ([[@LINE]]:7): [True: [[#min(C,2) ]], False: 1]
84
84
goto loop2 ;
85
85
86
86
while (i < 3 ) { // BRCOV: Branch ([[@LINE]]:10): [True: 0, False: 1]
@@ -95,12 +95,12 @@ void jumps() { // CHECK: @LINE|{{.*}}jumps()
95
95
}
96
96
}
97
97
98
- for (i = 0 ; i < 10 ; ++ i ) { // BRCOV: Branch ([[@LINE]]:15): [True: [[C10:10|1 ]], False: 1]
98
+ for (i = 0 ; i < 10 ; ++ i ) { // BRCOV: Branch ([[@LINE]]:15): [True: [[#min(C,10) ]], False: 1]
99
99
goto withinloop ;
100
100
// never reached -> no weights
101
101
if (i ) {} // BRCOV: Branch ([[@LINE]]:9): [True: 0, False: 0]
102
102
withinloop :
103
- if (i ) {} // BRCOV: Branch ([[@LINE]]:9): [True: [[C9:9|1 ]], False: 1]
103
+ if (i ) {} // BRCOV: Branch ([[@LINE]]:9): [True: [[#min(C,9) ]], False: 1]
104
104
}
105
105
106
106
}
@@ -113,28 +113,28 @@ void switches() { // CHECK: @LINE|{{.*}}switches()
113
113
default : // BRCOV: Branch ([[@LINE]]:3): [True: 1, Folded]
114
114
break ;
115
115
}
116
- // BRCOV: Branch ([[@LINE+1]]:63): [True: [[C15:15|1 ]], False: 0]
116
+ // BRCOV: Branch ([[@LINE+1]]:63): [True: [[#min(C,15) ]], False: 0]
117
117
for (int i = 0 , len = sizeof (weights ) / sizeof (weights [0 ]); i < len ; ++ i ) {
118
118
switch (i [weights ]) {
119
119
case 1 : // BRCOV: Branch ([[@LINE]]:5): [True: 1, Folded]
120
120
if (i ) {} // BRCOV: Branch ([[@LINE]]:11): [True: 0, False: 1]
121
121
// fallthrough
122
- case 2 : // BRCOV: Branch ([[@LINE]]:5): [True: [[C2 ]], Folded]
123
- if (i ) {} // BRCOV: Branch ([[@LINE]]:11): [True: [[C2 ]], False: 1]
122
+ case 2 : // BRCOV: Branch ([[@LINE]]:5): [True: [[#min(C,2) ]], Folded]
123
+ if (i ) {} // BRCOV: Branch ([[@LINE]]:11): [True: [[#min(C,2) ]], False: 1]
124
124
break ;
125
- case 3 : // BRCOV: Branch ([[@LINE]]:5): [True: [[C3:3|1 ]], Folded]
126
- if (i ) {} // BRCOV: Branch ([[@LINE]]:11): [True: [[C3 ]], False: 0]
125
+ case 3 : // BRCOV: Branch ([[@LINE]]:5): [True: [[#min(C,3) ]], Folded]
126
+ if (i ) {} // BRCOV: Branch ([[@LINE]]:11): [True: [[#min(C,3) ]], False: 0]
127
127
continue ;
128
- case 4 : // BRCOV: Branch ([[@LINE]]:5): [True: [[C4:4|1 ]], Folded]
129
- if (i ) {} // BRCOV: Branch ([[@LINE]]:11): [True: [[C4 ]], False: 0]
128
+ case 4 : // BRCOV: Branch ([[@LINE]]:5): [True: [[#min(C,4) ]], Folded]
129
+ if (i ) {} // BRCOV: Branch ([[@LINE]]:11): [True: [[#min(C,4) ]], False: 0]
130
130
switch (i ) {
131
- case 6 ... 9 : // BRCOV: Branch ([[@LINE]]:7): [True: [[C4 ]], Folded]
132
- if (i ) {} // BRCOV: Branch ([[@LINE]]:13): [True: [[C4 ]], False: 0]
131
+ case 6 ... 9 : // BRCOV: Branch ([[@LINE]]:7): [True: [[#min(C,4) ]], Folded]
132
+ if (i ) {} // BRCOV: Branch ([[@LINE]]:13): [True: [[#min(C,4) ]], False: 0]
133
133
continue ;
134
134
}
135
135
136
- default : // BRCOV: Branch ([[@LINE]]:5): [True: [[C5:5|1 ]], Folded]
137
- if (i == len - 1 ) // BRCOV: Branch ([[@LINE]]:11): [True: 1, False: [[C4 ]]]
136
+ default : // BRCOV: Branch ([[@LINE]]:5): [True: [[#min(C,5) ]], Folded]
137
+ if (i == len - 1 ) // BRCOV: Branch ([[@LINE]]:11): [True: 1, False: [[#min(C,4) ]]]
138
138
return ;
139
139
}
140
140
}
@@ -145,32 +145,32 @@ void switches() { // CHECK: @LINE|{{.*}}switches()
145
145
}
146
146
147
147
void big_switch () { // CHECK: @LINE|{{.*}}big_switch()
148
- for (int i = 0 ; i < 32 ; ++ i ) {// BRCOV: Branch ([[@LINE]]:19): [True: [[C32:32|1 ]], False: 1]
148
+ for (int i = 0 ; i < 32 ; ++ i ) {// BRCOV: Branch ([[@LINE]]:19): [True: [[#min(C,32) ]], False: 1]
149
149
switch (1 << i ) {
150
150
case (1 << 0 ): // BRCOV: Branch ([[@LINE]]:5): [True: 1, Folded]
151
151
if (i ) {} // BRCOV: Branch ([[@LINE]]:11): [True: 0, False: 1]
152
152
// fallthrough
153
153
case (1 << 1 ): // BRCOV: Branch ([[@LINE]]:5): [True: 1, Folded]
154
154
if (i ) {} // BRCOV: Branch ([[@LINE]]:11): [True: 1, False: 1]
155
155
break ;
156
- case (1 << 2 ) ... (1 << 12 ):// BRCOV: Branch ([[@LINE]]:5): [True: [[C11:11|1 ]], Folded]
157
- if (i ) {} // BRCOV: Branch ([[@LINE]]:11): [True: [[C11 ]], False: 0]
156
+ case (1 << 2 ) ... (1 << 12 ):// BRCOV: Branch ([[@LINE]]:5): [True: [[#min(C,11) ]], Folded]
157
+ if (i ) {} // BRCOV: Branch ([[@LINE]]:11): [True: [[#min(C,11) ]], False: 0]
158
158
break ;
159
159
// The branch for the large case range above appears after the case body.
160
160
161
161
case (1 << 13 ): // BRCOV: Branch ([[@LINE]]:5): [True: 1, Folded]
162
162
if (i ) {} // BRCOV: Branch ([[@LINE]]:11): [True: 1, False: 0]
163
163
break ;
164
- case (1 << 14 ) ... (1 << 28 )://BRCOV: Branch ([[@LINE]]:5): [True: [[C15 ]], Folded]
165
- if (i ) {} // BRCOV: Branch ([[@LINE]]:11): [True: [[C15 ]], False: 0]
164
+ case (1 << 14 ) ... (1 << 28 )://BRCOV: Branch ([[@LINE]]:5): [True: [[#min(C,15) ]], Folded]
165
+ if (i ) {} // BRCOV: Branch ([[@LINE]]:11): [True: [[#min(C,15) ]], False: 0]
166
166
break ;
167
167
// The branch for the large case range above appears after the case body.
168
168
169
169
case (1 << 29 ) ... ((1 << 29 ) + 1 ):
170
170
if (i ) {} // BRCOV: Branch ([[@LINE]]:11): [True: 1, False: 0]
171
171
break ;
172
- default : // BRCOV: Branch ([[@LINE]]:5): [True: [[C2 ]], Folded]
173
- if (i ) {} // BRCOV: Branch ([[@LINE]]:11): [True: [[C2 ]], False: 0]
172
+ default : // BRCOV: Branch ([[@LINE]]:5): [True: [[#min(C,2) ]], Folded]
173
+ if (i ) {} // BRCOV: Branch ([[@LINE]]:11): [True: [[#min(C,2) ]], False: 0]
174
174
break ;
175
175
}
176
176
}
@@ -180,30 +180,30 @@ void big_switch() { // CHECK: @LINE|{{.*}}big_switch()
180
180
void boolean_operators () { // CHECK: @LINE|{{.*}}boolean_operators()
181
181
int v ;
182
182
for (int i = 0 ; i < 100 ; ++ i ) {
183
- v = i % 3 || i ; // BRCOV: Branch ([[@LINE]]:9): [True: [[C66:66|1 ]], False: [[C34:34|1 ]]]
184
- // BRCOV: Branch ([[@LINE-1]]:18): [True: [[C33 ]], False: 1]
185
- v = i % 3 && i ; // BRCOV: Branch ([[@LINE]]:9): [True: [[C66 ]], False: [[C34 ]]]
186
- // BRCOV: Branch ([[@LINE-1]]:18): [True: [[C66 ]], False: 0]
187
- v = i % 3 || i % 2 || i ; // BRCOV: Branch ([[@LINE]]:9): [True: [[C66 ]], False: [[C34 ]]]
188
- // BRCOV: Branch ([[@LINE-1]]:18): [True: [[C17 ]], False: [[C17 ]]]
189
- v = i % 2 && i % 3 && i ; // BRCOV: Branch ([[@LINE-2]]:27): [True: [[C16 ]], False: 1]
190
- } // BRCOV: Branch ([[@LINE-1]]:9): [True: [[C50 ]], False: [[C50 ]]]
191
- // BRCOV: Branch ([[@LINE-2]]:18): [True: [[C33 ]], False: [[C17 ]]]
192
- } // BRCOV: Branch ([[@LINE-3]]:27): [True: [[C33 ]], False: 0]
183
+ v = i % 3 || i ; // BRCOV: Branch ([[@LINE]]:9): [True: [[#min(C,66) ]], False: [[#min(C,34) ]]]
184
+ // BRCOV: Branch ([[@LINE-1]]:18): [True: [[#min(C,33) ]], False: 1]
185
+ v = i % 3 && i ; // BRCOV: Branch ([[@LINE]]:9): [True: [[#min(C,66) ]], False: [[#min(C,34) ]]]
186
+ // BRCOV: Branch ([[@LINE-1]]:18): [True: [[#min(C,66) ]], False: 0]
187
+ v = i % 3 || i % 2 || i ; // BRCOV: Branch ([[@LINE]]:9): [True: [[#min(C,66) ]], False: [[#min(C,34) ]]]
188
+ // BRCOV: Branch ([[@LINE-1]]:18): [True: [[#min(C,17) ]], False: [[#min(C,17) ]]]
189
+ v = i % 2 && i % 3 && i ; // BRCOV: Branch ([[@LINE-2]]:27): [True: [[#min(C,16) ]], False: 1]
190
+ } // BRCOV: Branch ([[@LINE-1]]:9): [True: [[#min(C,50) ]], False: [[#min(C,50) ]]]
191
+ // BRCOV: Branch ([[@LINE-2]]:18): [True: [[#min(C,33) ]], False: [[#min(C,17) ]]]
192
+ } // BRCOV: Branch ([[@LINE-3]]:27): [True: [[#min(C,33) ]], False: 0]
193
193
194
194
void boolop_loops () { // CHECK: @LINE|{{.*}}boolop_loops()
195
195
int i = 100 ;
196
196
197
- while (i && i > 50 ) // BRCOV: Branch ([[@LINE]]:10): [True: [[C51 ]], False: 0]
198
- i -- ; // BRCOV: Branch ([[@LINE-1]]:15): [True: [[C50 ]], False: 1]
197
+ while (i && i > 50 ) // BRCOV: Branch ([[@LINE]]:10): [True: [[#min(C,51) ]], False: 0]
198
+ i -- ; // BRCOV: Branch ([[@LINE-1]]:15): [True: [[#min(C,50) ]], False: 1]
199
199
200
- while ((i % 2 ) || (i > 0 )) // BRCOV: Branch ([[@LINE]]:10): [True: [[C25 ]], False: [[C26:26|1 ]]]
201
- i -- ; // BRCOV: Branch ([[@LINE-1]]:21): [True: [[C25 ]], False: 1]
200
+ while ((i % 2 ) || (i > 0 )) // BRCOV: Branch ([[@LINE]]:10): [True: [[#min(C,25) ]], False: [[#min(C,26) ]]]
201
+ i -- ; // BRCOV: Branch ([[@LINE-1]]:21): [True: [[#min(C,25) ]], False: 1]
202
202
203
- for (i = 100 ; i && i > 50 ; -- i ); // BRCOV: Branch ([[@LINE]]:17): [True: [[C51 ]], False: 0]
204
- // BRCOV: Branch ([[@LINE-1]]:22): [True: [[C50 ]], False: 1]
205
- for (; (i % 2 ) || (i > 0 ); -- i ); // BRCOV: Branch ([[@LINE]]:10): [True: [[C25 ]], False: [[C26 ]]]
206
- // BRCOV: Branch ([[@LINE-1]]:21): [True: [[C25 ]], False: 1]
203
+ for (i = 100 ; i && i > 50 ; -- i ); // BRCOV: Branch ([[@LINE]]:17): [True: [[#min(C,51) ]], False: 0]
204
+ // BRCOV: Branch ([[@LINE-1]]:22): [True: [[#min(C,50) ]], False: 1]
205
+ for (; (i % 2 ) || (i > 0 ); -- i ); // BRCOV: Branch ([[@LINE]]:10): [True: [[#min(C,25) ]], False: [[#min(C,26) ]]]
206
+ // BRCOV: Branch ([[@LINE-1]]:21): [True: [[#min(C,25) ]], False: 1]
207
207
}
208
208
209
209
void conditional_operator () { // CHECK: @LINE|{{.*}}conditional_operator()
@@ -216,20 +216,20 @@ void conditional_operator() { // CHECK: @LINE|{{.*}}conditional_operator()
216
216
}
217
217
218
218
void do_fallthrough () { // CHECK: @LINE|{{.*}}do_fallthrough()
219
- for (int i = 0 ; i < 10 ; ++ i ) {// BRCOV: Branch ([[@LINE]]:19): [True: [[C10 ]], False: 1]
219
+ for (int i = 0 ; i < 10 ; ++ i ) {// BRCOV: Branch ([[@LINE]]:19): [True: [[#min(C,10) ]], False: 1]
220
220
int j = 0 ;
221
221
do {
222
222
// The number of exits out of this do-loop via the break statement
223
223
// exceeds the counter value for the loop (which does not include the
224
224
// fallthrough count). Make sure that does not violate any assertions.
225
225
if (i < 8 ) break ;
226
226
j ++ ;
227
- } while (j < 2 ); // BRCOV: Branch ([[@LINE]]:14): [True: [[C2 ]], False: [[C2 ]]]
227
+ } while (j < 2 ); // BRCOV: Branch ([[@LINE]]:14): [True: [[#min(C,2) ]], False: [[#min(C,2) ]]]
228
228
}
229
229
}
230
230
231
231
static void static_func () { // CHECK: @LINE|{{.*}}static_func()
232
- for (int i = 0 ; i < 10 ; ++ i ) {// BRCOV: Branch ([[@LINE]]:19): [True: [[C10 ]], False: 1]
232
+ for (int i = 0 ; i < 10 ; ++ i ) {// BRCOV: Branch ([[@LINE]]:19): [True: [[#min(C,10) ]], False: 1]
233
233
}
234
234
}
235
235
0 commit comments