Skip to content

Commit cfd38c4

Browse files
committed
[Profiler] Assign counter to IfStmt condition
Push a region to cover any expressions within an IfStmt condition. rdar://67280997
1 parent a2194f5 commit cfd38c4

5 files changed

+7
-5
lines changed

lib/SIL/IR/SILProfiler.cpp

+2
Original file line numberDiff line numberDiff line change
@@ -928,6 +928,8 @@ struct CoverageMapping : public ASTWalker {
928928
pushRegion(BS);
929929

930930
} else if (auto *IS = dyn_cast<IfStmt>(S)) {
931+
if (auto *Cond = getConditionNode(IS->getCond()))
932+
assignCounter(Cond, CounterExpr::Ref(getCurrentCounter()));
931933
assignCounter(IS, CounterExpr::Zero());
932934
CounterExpr &ThenCounter = assignCounter(IS->getThenStmt());
933935
if (IS->getElseStmt())

test/Profiler/coverage_exceptions.swift

+1
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,7 @@ func goo(_ b: Bool) -> Int { // CHECK-NEXT: [[@LINE]]:28 {{.*}} : 0
7070
do { // CHECK-NEXT: [[@LINE]]:6 -> [[@LINE+2]]:4 : 0
7171
throw SomeErr.Err1
7272
} catch { // CHECK-NEXT: [[@LINE]]:11 {{.*}} : 1
73+
// CHECK-NEXT: [[@LINE+1]]:8 {{.*}} : 1
7374
if b { // CHECK-NEXT: [[@LINE]]:10 {{.*}} : 2
7475
return 1
7576
} // CHECK-NEXT: [[@LINE]]:6 {{.*}} : (1 - 2)

test/Profiler/coverage_if.swift

+1
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33

44
// CHECK-LABEL: sil_coverage_map {{.*}}// coverage_if.foo
55
func foo(x : Bool) { // CHECK: [[@LINE]]:20 -> {{[0-9]+}}:2 : 0
6+
// CHECK: [[@LINE+1]]:6 -> [[@LINE+1]]:9 : 0
67
if (x) { // CHECK: [[@LINE]]:10 -> [[@LINE+1]]:4 : 1
78
}
89

test/Profiler/coverage_smoke.swift

+1-4
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@
1313
// RUN: %llvm-profdata show %t/default.profdata -function=main | %FileCheck %s --check-prefix=CHECK-MAIN
1414
// RUN: %llvm-cov show %t/main -instr-profile=%t/default.profdata | %FileCheck %s --check-prefix=CHECK-COV
1515
// RUN: %llvm-cov report %t/main -instr-profile=%t/default.profdata -show-functions %s | %FileCheck %s --check-prefix=CHECK-REPORT
16-
// RUN: rm -rf %t
1716

1817
// REQUIRES: profile_runtime
1918
// REQUIRES: executable_test
@@ -164,9 +163,7 @@ func catchError2(_ b: Bool) -> Int {
164163
do {
165164
throw CustomError.Err // CHECK-COV: {{ *}}[[@LINE]]|{{ *}}2
166165
} catch {
167-
// reviews.llvm.org/D85036 regressed coverage reporting for the
168-
// following line (rdar://67280997).
169-
if b { // CHECK-COV: {{ *}}[[@LINE]]|{{ *}}1
166+
if b { // CHECK-COV: {{ *}}[[@LINE]]|{{ *}}2
170167
return 1 // CHECK-COV: {{ *}}[[@LINE]]|{{ *}}1
171168
}
172169
}

test/Profiler/coverage_toplevel.swift

+2-1
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,8 @@ while (i < 10) {
2121
// CHECK-NEXT: [[@LINE+1]]:21 -> [[@LINE+1]]:22 : (0 - 1)
2222
var i2 = true ? 1 : 0;
2323

24-
// CHECK: sil_coverage_map{{.*}}__tlcd_line:[[@LINE+4]]:1
24+
// CHECK: sil_coverage_map{{.*}}__tlcd_line:[[@LINE+5]]:1
25+
// CHECK-NEXT: [[@LINE+4]]:4 -> [[@LINE+4]]:10 : 0
2526
// CHECK-NEXT: [[@LINE+3]]:11 -> [[@LINE+5]]:2 : 1
2627
// CHECK-NEXT: [[@LINE+2]]:1 -> [[@LINE+4]]:2 : 0
2728
// CHECK-NEXT: [[@LINE+3]]:2 -> [[@LINE+3]]:2 : 0

0 commit comments

Comments
 (0)