mirror of
https://github.com/apple/swift.git
synced 2025-12-21 12:14:44 +01:00
[Profiler] Assign counter to IfStmt condition
Push a region to cover any expressions within an IfStmt condition. rdar://67280997
This commit is contained in:
@@ -928,6 +928,8 @@ public:
|
|||||||
pushRegion(BS);
|
pushRegion(BS);
|
||||||
|
|
||||||
} else if (auto *IS = dyn_cast<IfStmt>(S)) {
|
} else if (auto *IS = dyn_cast<IfStmt>(S)) {
|
||||||
|
if (auto *Cond = getConditionNode(IS->getCond()))
|
||||||
|
assignCounter(Cond, CounterExpr::Ref(getCurrentCounter()));
|
||||||
assignCounter(IS, CounterExpr::Zero());
|
assignCounter(IS, CounterExpr::Zero());
|
||||||
CounterExpr &ThenCounter = assignCounter(IS->getThenStmt());
|
CounterExpr &ThenCounter = assignCounter(IS->getThenStmt());
|
||||||
if (IS->getElseStmt())
|
if (IS->getElseStmt())
|
||||||
|
|||||||
@@ -70,6 +70,7 @@ func goo(_ b: Bool) -> Int { // CHECK-NEXT: [[@LINE]]:28 {{.*}} : 0
|
|||||||
do { // CHECK-NEXT: [[@LINE]]:6 -> [[@LINE+2]]:4 : 0
|
do { // CHECK-NEXT: [[@LINE]]:6 -> [[@LINE+2]]:4 : 0
|
||||||
throw SomeErr.Err1
|
throw SomeErr.Err1
|
||||||
} catch { // CHECK-NEXT: [[@LINE]]:11 {{.*}} : 1
|
} catch { // CHECK-NEXT: [[@LINE]]:11 {{.*}} : 1
|
||||||
|
// CHECK-NEXT: [[@LINE+1]]:8 {{.*}} : 1
|
||||||
if b { // CHECK-NEXT: [[@LINE]]:10 {{.*}} : 2
|
if b { // CHECK-NEXT: [[@LINE]]:10 {{.*}} : 2
|
||||||
return 1
|
return 1
|
||||||
} // CHECK-NEXT: [[@LINE]]:6 {{.*}} : (1 - 2)
|
} // CHECK-NEXT: [[@LINE]]:6 {{.*}} : (1 - 2)
|
||||||
|
|||||||
@@ -3,6 +3,7 @@
|
|||||||
|
|
||||||
// CHECK-LABEL: sil_coverage_map {{.*}}// coverage_if.foo
|
// CHECK-LABEL: sil_coverage_map {{.*}}// coverage_if.foo
|
||||||
func foo(x : Bool) { // CHECK: [[@LINE]]:20 -> {{[0-9]+}}:2 : 0
|
func foo(x : Bool) { // CHECK: [[@LINE]]:20 -> {{[0-9]+}}:2 : 0
|
||||||
|
// CHECK: [[@LINE+1]]:6 -> [[@LINE+1]]:9 : 0
|
||||||
if (x) { // CHECK: [[@LINE]]:10 -> [[@LINE+1]]:4 : 1
|
if (x) { // CHECK: [[@LINE]]:10 -> [[@LINE+1]]:4 : 1
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -13,7 +13,6 @@
|
|||||||
// RUN: %llvm-profdata show %t/default.profdata -function=main | %FileCheck %s --check-prefix=CHECK-MAIN
|
// RUN: %llvm-profdata show %t/default.profdata -function=main | %FileCheck %s --check-prefix=CHECK-MAIN
|
||||||
// RUN: %llvm-cov show %t/main -instr-profile=%t/default.profdata | %FileCheck %s --check-prefix=CHECK-COV
|
// RUN: %llvm-cov show %t/main -instr-profile=%t/default.profdata | %FileCheck %s --check-prefix=CHECK-COV
|
||||||
// RUN: %llvm-cov report %t/main -instr-profile=%t/default.profdata -show-functions %s | %FileCheck %s --check-prefix=CHECK-REPORT
|
// RUN: %llvm-cov report %t/main -instr-profile=%t/default.profdata -show-functions %s | %FileCheck %s --check-prefix=CHECK-REPORT
|
||||||
// RUN: rm -rf %t
|
|
||||||
|
|
||||||
// REQUIRES: profile_runtime
|
// REQUIRES: profile_runtime
|
||||||
// REQUIRES: executable_test
|
// REQUIRES: executable_test
|
||||||
@@ -164,9 +163,7 @@ func catchError2(_ b: Bool) -> Int {
|
|||||||
do {
|
do {
|
||||||
throw CustomError.Err // CHECK-COV: {{ *}}[[@LINE]]|{{ *}}2
|
throw CustomError.Err // CHECK-COV: {{ *}}[[@LINE]]|{{ *}}2
|
||||||
} catch {
|
} catch {
|
||||||
// reviews.llvm.org/D85036 regressed coverage reporting for the
|
if b { // CHECK-COV: {{ *}}[[@LINE]]|{{ *}}2
|
||||||
// following line (rdar://67280997).
|
|
||||||
if b { // CHECK-COV: {{ *}}[[@LINE]]|{{ *}}1
|
|
||||||
return 1 // CHECK-COV: {{ *}}[[@LINE]]|{{ *}}1
|
return 1 // CHECK-COV: {{ *}}[[@LINE]]|{{ *}}1
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -21,7 +21,8 @@ while (i < 10) {
|
|||||||
// CHECK-NEXT: [[@LINE+1]]:21 -> [[@LINE+1]]:22 : (0 - 1)
|
// CHECK-NEXT: [[@LINE+1]]:21 -> [[@LINE+1]]:22 : (0 - 1)
|
||||||
var i2 = true ? 1 : 0;
|
var i2 = true ? 1 : 0;
|
||||||
|
|
||||||
// CHECK: sil_coverage_map{{.*}}__tlcd_line:[[@LINE+4]]:1
|
// CHECK: sil_coverage_map{{.*}}__tlcd_line:[[@LINE+5]]:1
|
||||||
|
// CHECK-NEXT: [[@LINE+4]]:4 -> [[@LINE+4]]:10 : 0
|
||||||
// CHECK-NEXT: [[@LINE+3]]:11 -> [[@LINE+5]]:2 : 1
|
// CHECK-NEXT: [[@LINE+3]]:11 -> [[@LINE+5]]:2 : 1
|
||||||
// CHECK-NEXT: [[@LINE+2]]:1 -> [[@LINE+4]]:2 : 0
|
// CHECK-NEXT: [[@LINE+2]]:1 -> [[@LINE+4]]:2 : 0
|
||||||
// CHECK-NEXT: [[@LINE+3]]:2 -> [[@LINE+3]]:2 : 0
|
// CHECK-NEXT: [[@LINE+3]]:2 -> [[@LINE+3]]:2 : 0
|
||||||
|
|||||||
Reference in New Issue
Block a user