Skip to content

Commit 8dc33bb

Browse files
committed
Merge remote-tracking branch 'origin/users/chapuni/cov/single/switch' into single-byte-with-branch-cov
2 parents 88c97b8 + e2810c9 commit 8dc33bb

File tree

6 files changed

+97
-54
lines changed

6 files changed

+97
-54
lines changed

clang/lib/CodeGen/CGStmt.cpp

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2371,6 +2371,18 @@ void CodeGenFunction::EmitSwitchStmt(const SwitchStmt &S) {
23712371

23722372
ConditionScope.ForceCleanup();
23732373

2374+
// Close the last case (or DefaultBlock).
2375+
EmitBranch(SwitchExit.getBlock());
2376+
2377+
// Insert a False Counter if SwitchStmt doesn't have DefaultStmt.
2378+
if (getIsCounterPair(S.getCond()).second) {
2379+
auto *ImplicitDefaultBlock = createBasicBlock("sw.false");
2380+
EmitBlock(ImplicitDefaultBlock);
2381+
incrementProfileCounter(UseSkipPath, S.getCond());
2382+
Builder.CreateBr(SwitchInsn->getDefaultDest());
2383+
SwitchInsn->setDefaultDest(ImplicitDefaultBlock);
2384+
}
2385+
23742386
// Emit continuation.
23752387
EmitBlock(SwitchExit.getBlock(), true);
23762388
incrementProfileCounter(&S);

clang/lib/CodeGen/CoverageMappingGen.cpp

Lines changed: 24 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -991,6 +991,25 @@ struct CounterCoverageMappingBuilder
991991
return Counters;
992992
}
993993

994+
/// Returns {TrueCnt,FalseCnt} for "implicit default".
995+
/// FalseCnt is considered as the False count on SwitchStmt.
996+
std::pair<Counter, Counter>
997+
getSwitchImplicitDefaultCounterPair(const Stmt *Cond, Counter ParentCount,
998+
Counter CaseCountSum) {
999+
if (llvm::EnableSingleByteCoverage)
1000+
// Allocate the new Counter since `subtract(Parent - Sum)` is unavailable.
1001+
return {Counter::getZero(), // Folded
1002+
Counter::getCounter(CounterMap[Cond].Skipped = NextCounterNum++)};
1003+
1004+
// Simplify is skipped while building the counters above: it can get
1005+
// really slow on top of switches with thousands of cases. Instead,
1006+
// trigger simplification by adding zero to the last counter.
1007+
CaseCountSum =
1008+
addCounters(CaseCountSum, Counter::getZero(), /*Simplify=*/true);
1009+
1010+
return {CaseCountSum, Builder.subtract(ParentCount, CaseCountSum)};
1011+
}
1012+
9941013
bool IsCounterEqual(Counter OutCount, Counter ParentCount) {
9951014
if (OutCount == ParentCount)
9961015
return true;
@@ -1885,7 +1904,7 @@ struct CounterCoverageMappingBuilder
18851904
propagateCounts(Counter::getZero(), Body);
18861905
BreakContinue BC = BreakContinueStack.pop_back_val();
18871906

1888-
if (!BreakContinueStack.empty() && !llvm::EnableSingleByteCoverage)
1907+
if (!BreakContinueStack.empty())
18891908
BreakContinueStack.back().ContinueCount = addCounters(
18901909
BreakContinueStack.back().ContinueCount, BC.ContinueCount);
18911910

@@ -1900,11 +1919,6 @@ struct CounterCoverageMappingBuilder
19001919
MostRecentLocation = getStart(S);
19011920
handleFileExit(ExitLoc);
19021921

1903-
// When single byte coverage mode is enabled, do not create branch region by
1904-
// early returning.
1905-
if (llvm::EnableSingleByteCoverage)
1906-
return;
1907-
19081922
// Create a Branch Region around each Case. Subtract the case's
19091923
// counter from the Parent counter to track the "False" branch count.
19101924
Counter CaseCountSum;
@@ -1919,25 +1933,17 @@ struct CounterCoverageMappingBuilder
19191933
// the hidden branch, which will be added later by the CodeGen. This region
19201934
// will be associated with the switch statement's condition.
19211935
if (!HasDefaultCase) {
1922-
// Simplify is skipped while building the counters above: it can get
1923-
// really slow on top of switches with thousands of cases. Instead,
1924-
// trigger simplification by adding zero to the last counter.
1925-
CaseCountSum =
1926-
addCounters(CaseCountSum, Counter::getZero(), /*Simplify=*/true);
1927-
1928-
// This is considered as the False count on SwitchStmt.
1929-
Counter SwitchFalse = subtractCounters(ParentCount, CaseCountSum);
1930-
createBranchRegion(S->getCond(), CaseCountSum, SwitchFalse);
1936+
auto Counters = getSwitchImplicitDefaultCounterPair(
1937+
S->getCond(), ParentCount, CaseCountSum);
1938+
createBranchRegion(S->getCond(), Counters.first, Counters.second);
19311939
}
19321940
}
19331941

19341942
void VisitSwitchCase(const SwitchCase *S) {
19351943
extendRegion(S);
19361944

19371945
SourceMappingRegion &Parent = getRegion();
1938-
Counter Count = llvm::EnableSingleByteCoverage
1939-
? getRegionCounter(S)
1940-
: addCounters(Parent.getCounter(), getRegionCounter(S));
1946+
Counter Count = addCounters(Parent.getCounter(), getRegionCounter(S));
19411947

19421948
// Reuse the existing region if it starts at our label. This is typical of
19431949
// the first case in a switch.

clang/test/CoverageMapping/single-byte-counters.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -55,17 +55,17 @@ int testSwitch(int x) { // CHECK-NEXT: File 0, [[@LINE]]:23 -> [[@LINE+20]]:2 =
5555
switch (x) {
5656
// CHECK-NEXT: Gap,File 0, [[@LINE-1]]:14 -> [[@LINE+13]]:15 = 0
5757
case 1: // CHECK-NEXT: File 0, [[@LINE]]:3 -> [[@LINE+3]]:10 = [[C31:#2]]
58-
58+
// CHECK-NEXT: Branch,File 0, [[@LINE-1]]:3 -> [[@LINE-1]]:9 = [[C31]], 0
5959
result = 1;
6060
break;
6161
// CHECK-NEXT: Gap,File 0, [[@LINE-1]]:11 -> [[@LINE+1]]:3 = 0
6262
case 2: // CHECK-NEXT: File 0, [[@LINE]]:3 -> [[@LINE+3]]:10 = [[C32:#3]]
63-
63+
// CHECK-NEXT: Branch,File 0, [[@LINE-1]]:3 -> [[@LINE-1]]:9 = [[C32]], 0
6464
result = 2;
6565
break;
6666
// CHECK-NEXT: Gap,File 0, [[@LINE-1]]:11 -> [[@LINE+1]]:3 = 0
6767
default: // CHECK-NEXT: File 0, [[@LINE]]:3 -> [[@LINE+2]]:15 = [[C3D:#4]]
68-
68+
// CHECK-NEXT: Branch,File 0, [[@LINE-1]]:3 -> [[@LINE-1]]:10 = [[C3D]], 0
6969
result = 0;
7070
}
7171
// CHECK-NEXT: Gap,File 0, [[@LINE-1]]:4 -> [[@LINE+1]]:3 = [[C3E:#1]]

llvm/test/tools/llvm-cov/Inputs/branch-c-general-single.proftext

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -191,7 +191,7 @@ jumps
191191
# Func Hash:
192192
15051420506203462683
193193
# Num Counters:
194-
32
194+
39
195195
# Counter Values:
196196
1
197197
1
@@ -227,6 +227,18 @@ jumps
227227
1
228228
0
229229
1
230+
1
231+
1
232+
1
233+
1
234+
1
235+
1
236+
0
237+
0
238+
1
239+
1
240+
1
241+
0
230242

231243
main
232244
# Func Hash:
@@ -251,7 +263,7 @@ switches
251263
# Func Hash:
252264
43242458792028222
253265
# Num Counters:
254-
27
266+
30
255267
# Counter Values:
256268
1
257269
1
@@ -279,4 +291,5 @@ switches
279291
1
280292
0
281293
0
294+
0
282295

llvm/test/tools/llvm-cov/Inputs/branch-c-general-single.yaml

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -26,17 +26,17 @@ Sections:
2626
Type: SHT_PROGBITS
2727
Flags: [ SHF_GNU_RETAIN ]
2828
AddressAlign: 0x8
29-
Content: 55947829059F255EF70100001B9C495D3463E1D04C551E9517F40F4F010102396D51714F013B0E2F02100201000101010F001420055D000F0014000016001905001A009B8080800805001B040400011402858080800810010100230001050104000009000A2009590009000A09000B008C8080800809000C000E5D010402818080800810010100010D0101030D0D0107000820116100070008110009008A8080800811000A000C100101000100010E0283808080081001010001000103210219000A000B201569000A000B15000C008D8080800815000D03041901030204190109000A201D650009000A1D000B008C808080081D000C000E1002010001690103000D69000E0181808080082101011B022501011A022901011902290207000C202D6D0007000C2D000D0185808080082D0105000F6D001002838080800810010100016D0103140203000A000F203171000A000F3100100091808080083100110A0435010309040001100691808080083D01050111000112018580808008410105011200011301858080800845010501117103040283808080081001010001710103080207000F001520497D000F0015510017001A49001B009C8080800849001C0604000115028580808008100101003F0001050304000009000A204D750009000A4D000B008C808080084D000C000E5101030204510109000A2055790009000A55000B008C8080800855000C000E1002010001
29+
Content: 55947829059F255ED50100001B9C495D3463E1D04C551E9517F40F4F0101004A013B0E2F02100201000105010F001409001600190D001A009B808080080D001B040400011402858080800810010100230001050104000009000A15000B008C8080800815000C000E11010402818080800810010100011D010126021D01070008210009008A8080800821000A000C1001010001250103000D25000E0283808080081001010001000103210229000A000B2D000C008D808080082D000D03043501030204350109000A39000B008C8080800839000C000E1002010001310103000D31000E0181808080084101011B024501011A024901011902490207000C4D000D0185808080084D0105000F5100100283808080081001010001510103140255000A000F5900100091808080085900110A04610103090420009901010D000E00001006918080800869010501112069000005000B0001120185808080086D01050112206D000005000B00011301858080800871010501112071000005000B5D030402838080800810010100015D0103080275000F0015790017001A7D001B009C808080087D001C0604000115028580808008100101003F0001050304000009000A8501000B008C808080088501000C000E8D01010302048D010109000A9101000B008C808080089101000C000E1002010001
3030
- Name: '__llvm_covfun (4)'
3131
Type: SHT_PROGBITS
3232
Flags: [ SHF_GNU_RETAIN ]
3333
AddressAlign: 0x8
34-
Content: 7129CA3C268292BF730100003E688383C9A099004C551E9517F40F4F010101051139016C112502100201011C000217028A80808008090103010A05020402838080800810010100620501031C0203003F0046200D65003F0046110048004B0D004C00CD808080080D004D1704000119148F80808008150105130F15010B000C20194D000B000C19000D008E8080800819000E001010010100151D0105020C1D010B000C202151000B000C21000D008E8080800821000E001000010D018580808008250105020F25010B000C202955000B000C29000D008E8080800829000E00100001100185808080082D01050A0F2D010B000C203159000B000C31000D008E8080800831000E0010000112039180808008390107021139010D000E203D5D000D000E3D000F0090808080083D001000123502080285808080081001010001410105020F41010B0017204561000B0017450018018980808008450109000F6502040383808080081001010121650203020265000700112049690007001149001200938080800849001300151001010001
34+
Content: 7129CA3C268292BF8B0100003E688383C9A099004C551E9517F40F4F010103292D516151613D016C112502100201011C000217028A80808008090103010A2009000003000A05020402838080800810010100620501031C020D003F0046110048004B15004C00CD8080800815004D1704000119148F80808008210105130F2021000005000B21010B000C25000D008E8080800825000E00101001010015030105100F202D000005000B03010B000C31000D008E8080800831000E0010350107000C35000D0185808080083901050D0F2039000005000B39010B000C3D000D008E808080083D000E0010410107000F4100100185808080084501050A0F2045000005000B45010B000C49000D008E8080800849000E00104D0107080F200075000F001000001203918080800855010702112055000007001355010D000E59000F00908080800859001000125D0109001151010802858080800810010100010B0105020F2061000005000C0B010B0017650018018980808008650109000F1902040383808080081001010121190203020219000700116D00120093808080086D001300151001010001
3535
- Name: '__llvm_covfun (5)'
3636
Type: SHT_PROGBITS
3737
Flags: [ SHF_GNU_RETAIN ]
3838
AddressAlign: 0x8
39-
Content: 3F4D1C6E6087417B4E010000D6FF56B8865A69B64C551E9517F40F4F010101010933019301131F0203011300192005610013001909001B001E05001F00A0808080080500201C04000115198C808080080D0105180C0D010B000C201145000B000C11000D008E8080800811000E00101001010015150105020C15010B000C201949000B000C19000D008E8080800819000E001000010D0185808080081D0105020C1D010B000C20214D000B000C21000D008E8080800821000E001000010D0385808080081001010101250205020C25010B000C202951000B000C29000D008E8080800829000E001000010D0185808080082D0105020C2D010B000C203155000B000C31000D008E8080800831000E001000010D0385808080081001010101350205020C35010B000C203959000B000C39000D008E8080800839000E001000010D0185808080083D0105020C3D010B000C20415D000B000C41000D008E8080800841000E00101004010001
39+
Content: 3F4D1C6E6087417B65010000D6FF56B8865A69B64C551E9517F40F4F010101212538019301131F02050113001909001B001E0D001F00A0808080080D00201C04000115198C80808008190105180C2019000005001219010B000C1D000D008E808080081D000E00101001010015030105150C2025000005001203010B000C29000D008E8080800829000E00102D0107000C2D000D018580808008310105120C2031000005002031010B000C35000D008E8080800835000E0010390107000C39000D03858080800810010101013D02050D0C203D00000500133D010B000C41000D008E8080800841000E0010450107000C45000D0185808080084901050A0C2049000005002149010B000C4D000D008E808080084D000E0010510107000C51000D0385808080081001010101550205050C2055000005002755010B000C59000D008E8080800859000E00105D0107000C5D000D018580808008610105020C2061000005000C61010B000C65000D008E8080800865000E0010690107000C1003010001
4040
- Name: '__llvm_covfun (6)'
4141
Type: SHT_PROGBITS
4242
Flags: [ SHF_GNU_RETAIN ]
@@ -137,6 +137,7 @@ Symbols:
137137
Section: '__llvm_covfun (3)'
138138
Binding: STB_WEAK
139139
<<<<<<< HEAD
140+
<<<<<<< HEAD
140141
<<<<<<< HEAD
141142
Size: 0x1FB
142143
=======
@@ -145,12 +146,16 @@ Symbols:
145146
=======
146147
Size: 0x213
147148
>>>>>>> origin/users/chapuni/cov/single/binop
149+
=======
150+
Size: 0x1F1
151+
>>>>>>> origin/users/chapuni/cov/single/switch
148152
Other: [ STV_HIDDEN ]
149153
- Name: __covrec_BF9282263CCA2971u
150154
Type: STT_OBJECT
151155
Section: '__llvm_covfun (4)'
152156
Binding: STB_WEAK
153157
<<<<<<< HEAD
158+
<<<<<<< HEAD
154159
<<<<<<< HEAD
155160
Size: 0x186
156161
=======
@@ -159,12 +164,16 @@ Symbols:
159164
=======
160165
Size: 0x18F
161166
>>>>>>> origin/users/chapuni/cov/single/binop
167+
=======
168+
Size: 0x1A7
169+
>>>>>>> origin/users/chapuni/cov/single/switch
162170
Other: [ STV_HIDDEN ]
163171
- Name: __covrec_7B4187606E1C4D3Fu
164172
Type: STT_OBJECT
165173
Section: '__llvm_covfun (5)'
166174
Binding: STB_WEAK
167175
<<<<<<< HEAD
176+
<<<<<<< HEAD
168177
<<<<<<< HEAD
169178
Size: 0x161
170179
=======
@@ -173,6 +182,9 @@ Symbols:
173182
=======
174183
Size: 0x16A
175184
>>>>>>> origin/users/chapuni/cov/single/binop
185+
=======
186+
Size: 0x181
187+
>>>>>>> origin/users/chapuni/cov/single/switch
176188
Other: [ STV_HIDDEN ]
177189
- Name: __covrec_58A39A89A88AA459u
178190
Type: STT_OBJECT

llvm/test/tools/llvm-cov/Inputs/branch-c-general.c

Lines changed: 28 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -86,11 +86,11 @@ void jumps() { // CHECK: @LINE|{{.*}}jumps()
8686
while (i < 3) { // CHECK: Branch ([[@LINE]]:10): [True: 0, False: 1]
8787
loop2:
8888
switch (i) {
89-
case 0: // BRCOV: Branch ([[@LINE]]:5): [True: 1, Folded]
89+
case 0: // CHECK: Branch ([[@LINE]]:5): [True: 1, Folded]
9090
goto first;
91-
case 1: // BRCOV: Branch ([[@LINE]]:5): [True: 1, Folded]
91+
case 1: // CHECK: Branch ([[@LINE]]:5): [True: 1, Folded]
9292
goto second;
93-
case 2: // BRCOV: Branch ([[@LINE]]:5): [True: 1, Folded]
93+
case 2: // CHECK: Branch ([[@LINE]]:5): [True: 1, Folded]
9494
goto third;
9595
}
9696
}
@@ -110,31 +110,31 @@ void switches() { // CHECK: @LINE|{{.*}}switches()
110110

111111
// No cases -> no weights
112112
switch (weights[0]) {
113-
default: // BRCOV: Branch ([[@LINE]]:3): [True: 1, Folded]
113+
default: // CHECK: Branch ([[@LINE]]:3): [True: 1, Folded]
114114
break;
115115
}
116116
// CHECK: 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]) {
119-
case 1: // BRCOV: Branch ([[@LINE]]:5): [True: 1, Folded]
120-
if (i) {} // CHECK: Branch ([[@LINE]]:11): [True: 0, False: 1]
119+
case 1: // CHECK: Branch ([[@LINE]]:5): [True: 1, Folded]
120+
if (i) {} // BRCOV: Branch ([[@LINE]]:11): [True: 0, False: 1]
121121
// fallthrough
122-
case 2: // BRCOV: Branch ([[@LINE]]:5): [True: [[#min(C,2)]], Folded]
123-
if (i) {} // CHECK: Branch ([[@LINE]]:11): [True: [[#min(C,2)]], False: 1]
122+
case 2: // CHECK: 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: [[#min(C,3)]], Folded]
126-
if (i) {} // CHECK: Branch ([[@LINE]]:11): [True: [[#min(C,3)]], False: 0]
125+
case 3: // CHECK: 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: [[#min(C,4)]], Folded]
129-
if (i) {} // CHECK: Branch ([[@LINE]]:11): [True: [[#min(C,4)]], False: 0]
128+
case 4: // CHECK: 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: [[#min(C,4)]], Folded]
132-
if (i) {} // CHECK: Branch ([[@LINE]]:13): [True: [[#min(C,4)]], False: 0]
131+
case 6 ... 9: // CHECK: 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: [[#min(C,5)]], Folded]
137-
if (i == len - 1) // CHECK: Branch ([[@LINE]]:11): [True: 1, False: [[#min(C,4)]]]
136+
default: // CHECK: 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
}
@@ -147,30 +147,30 @@ void switches() { // CHECK: @LINE|{{.*}}switches()
147147
void big_switch() { // CHECK: @LINE|{{.*}}big_switch()
148148
for (int i = 0; i < 32; ++i) {// CHECK: Branch ([[@LINE]]:19): [True: [[#min(C,32)]], False: 1]
149149
switch (1 << i) {
150-
case (1 << 0): // BRCOV: Branch ([[@LINE]]:5): [True: 1, Folded]
151-
if (i) {} // CHECK: Branch ([[@LINE]]:11): [True: 0, False: 1]
150+
case (1 << 0): // CHECK: Branch ([[@LINE]]:5): [True: 1, Folded]
151+
if (i) {} // BRCOV: Branch ([[@LINE]]:11): [True: 0, False: 1]
152152
// fallthrough
153-
case (1 << 1): // BRCOV: Branch ([[@LINE]]:5): [True: 1, Folded]
154-
if (i) {} // CHECK: Branch ([[@LINE]]:11): [True: 1, False: 1]
153+
case (1 << 1): // CHECK: Branch ([[@LINE]]:5): [True: 1, Folded]
154+
if (i) {} // BRCOV: Branch ([[@LINE]]:11): [True: 1, False: 1]
155155
break;
156-
case (1 << 2) ... (1 << 12):// BRCOV: Branch ([[@LINE]]:5): [True: [[#min(C,11)]], Folded]
157-
if (i) {} // CHECK: Branch ([[@LINE]]:11): [True: [[#min(C,11)]], False: 0]
156+
case (1 << 2) ... (1 << 12):// CHECK: 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

161-
case (1 << 13): // BRCOV: Branch ([[@LINE]]:5): [True: 1, Folded]
162-
if (i) {} // CHECK: Branch ([[@LINE]]:11): [True: 1, False: 0]
161+
case (1 << 13): // CHECK: Branch ([[@LINE]]:5): [True: 1, Folded]
162+
if (i) {} // BRCOV: Branch ([[@LINE]]:11): [True: 1, False: 0]
163163
break;
164-
case (1 << 14) ... (1 << 28)://BRCOV: Branch ([[@LINE]]:5): [True: [[#min(C,15)]], Folded]
165-
if (i) {} // CHECK: Branch ([[@LINE]]:11): [True: [[#min(C,15)]], False: 0]
164+
case (1 << 14) ... (1 << 28)://CHECK: 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) {} // CHECK: Branch ([[@LINE]]:11): [True: 1, False: 0]
171171
break;
172-
default: // BRCOV: Branch ([[@LINE]]:5): [True: [[#min(C,2)]], Folded]
173-
if (i) {} // CHECK: Branch ([[@LINE]]:11): [True: [[#min(C,2)]], False: 0]
172+
default: // CHECK: 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
}

0 commit comments

Comments
 (0)