66
77void simple_loops () { // CHECK: @LINE|{{.*}}simple_loops()
88 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]
1010 }
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]
1212 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]
1414
1515}
1616
1717void 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]
2323 } 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]
2525 }
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]
3030
3131}
3232
@@ -35,22 +35,22 @@ void early_exits() { // CHECK: @LINE|{{.*}}early_exits()
3535
3636 if (i ) {} // BRCOV: Branch ([[@LINE]]:7): [True: 0, False: 1]
3737
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]
3939 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) ]]]
4141 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) ]]]
4343 continue ;
4444 }
4545
4646 if (i ) {} // BRCOV: Branch ([[@LINE]]:7): [True: 1, False: 0]
4747
4848 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) ]]]
5050 return ;
5151 else
5252 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]
5454
5555 if (i ) {} // BRCOV: Branch ([[@LINE]]:7): [True: 0, False: 0]
5656
@@ -80,7 +80,7 @@ void jumps() { // CHECK: @LINE|{{.*}}jumps()
8080second :
8181third :
8282 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]
8484 goto loop2 ;
8585
8686 while (i < 3 ) { // BRCOV: Branch ([[@LINE]]:10): [True: 0, False: 1]
@@ -95,12 +95,12 @@ void jumps() { // CHECK: @LINE|{{.*}}jumps()
9595 }
9696 }
9797
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]
9999 goto withinloop ;
100100 // never reached -> no weights
101101 if (i ) {} // BRCOV: Branch ([[@LINE]]:9): [True: 0, False: 0]
102102 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]
104104 }
105105
106106}
@@ -113,28 +113,28 @@ void switches() { // CHECK: @LINE|{{.*}}switches()
113113 default : // BRCOV: Branch ([[@LINE]]:3): [True: 1, Folded]
114114 break ;
115115 }
116- // BRCOV: Branch ([[@LINE+1]]:63): [True: [[C15:15|1 ]], False: 0]
116+ // BRCOV: Branch ([[@LINE+1]]:63): [True: [[#min(C,15) ]], False: 0]
117117 for (int i = 0 , len = sizeof (weights ) / sizeof (weights [0 ]); i < len ; ++ i ) {
118118 switch (i [weights ]) {
119119 case 1 : // BRCOV: Branch ([[@LINE]]:5): [True: 1, Folded]
120120 if (i ) {} // BRCOV: Branch ([[@LINE]]:11): [True: 0, False: 1]
121121 // 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]
124124 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]
127127 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]
130130 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]
133133 continue ;
134134 }
135135
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) ]]]
138138 return ;
139139 }
140140 }
@@ -145,32 +145,32 @@ void switches() { // CHECK: @LINE|{{.*}}switches()
145145}
146146
147147void 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]
149149 switch (1 << i ) {
150150 case (1 << 0 ): // BRCOV: Branch ([[@LINE]]:5): [True: 1, Folded]
151151 if (i ) {} // BRCOV: Branch ([[@LINE]]:11): [True: 0, False: 1]
152152 // fallthrough
153153 case (1 << 1 ): // BRCOV: Branch ([[@LINE]]:5): [True: 1, Folded]
154154 if (i ) {} // BRCOV: Branch ([[@LINE]]:11): [True: 1, False: 1]
155155 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]
158158 break ;
159159 // The branch for the large case range above appears after the case body.
160160
161161 case (1 << 13 ): // BRCOV: Branch ([[@LINE]]:5): [True: 1, Folded]
162162 if (i ) {} // BRCOV: Branch ([[@LINE]]:11): [True: 1, False: 0]
163163 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]
166166 break ;
167167 // The branch for the large case range above appears after the case body.
168168
169169 case (1 << 29 ) ... ((1 << 29 ) + 1 ):
170170 if (i ) {} // BRCOV: Branch ([[@LINE]]:11): [True: 1, False: 0]
171171 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]
174174 break ;
175175 }
176176 }
@@ -180,30 +180,30 @@ void big_switch() { // CHECK: @LINE|{{.*}}big_switch()
180180void boolean_operators () { // CHECK: @LINE|{{.*}}boolean_operators()
181181 int v ;
182182 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]
193193
194194void boolop_loops () { // CHECK: @LINE|{{.*}}boolop_loops()
195195 int i = 100 ;
196196
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]
199199
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]
202202
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]
207207}
208208
209209void conditional_operator () { // CHECK: @LINE|{{.*}}conditional_operator()
@@ -216,20 +216,20 @@ void conditional_operator() { // CHECK: @LINE|{{.*}}conditional_operator()
216216}
217217
218218void 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]
220220 int j = 0 ;
221221 do {
222222 // The number of exits out of this do-loop via the break statement
223223 // exceeds the counter value for the loop (which does not include the
224224 // fallthrough count). Make sure that does not violate any assertions.
225225 if (i < 8 ) break ;
226226 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) ]]]
228228 }
229229}
230230
231231static 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]
233233 }
234234}
235235
0 commit comments