Skip to content

Commit 7e141f4

Browse files
committed
[Profiler] Emit coverage for literal initializers
It's not clear why these should be excluded when other initializers receive coverage.
1 parent 983e2f3 commit 7e141f4

File tree

2 files changed

+30
-5
lines changed

2 files changed

+30
-5
lines changed

lib/SIL/IR/SILProfiler.cpp

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -51,11 +51,6 @@ static bool isUnmapped(ASTNode N) {
5151
}
5252

5353
if (auto *E = N.dyn_cast<Expr *>()) {
54-
if (isa<LiteralExpr>(E)) {
55-
LLVM_DEBUG(llvm::dbgs() << "Skipping ASTNode: literal expr\n");
56-
return true;
57-
}
58-
5954
if (auto *CE = dyn_cast<AbstractClosureExpr>(E)) {
6055
// Only map closure expressions with bodies.
6156
if (!doesClosureHaveBody(CE)) {

test/Profiler/coverage_var_init.swift

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,36 @@
11
// RUN: %target-swift-frontend -Xllvm -sil-full-demangle -profile-generate -profile-coverage-mapping -emit-sorted-sil -emit-sil -module-name coverage_var_init %s | %FileCheck %s
22
// RUN: %target-swift-frontend -profile-generate -profile-coverage-mapping -emit-ir %s
33

4+
struct S {
5+
// CHECK-LABEL: sil_coverage_map {{.*}} "$s17coverage_var_init1SV1iSivpfi" {{.*}} // variable initialization expression of coverage_var_init.S.i
6+
// CHECK-NEXT: [[@LINE+1]]:11 -> [[@LINE+1]]:12 : 0
7+
var i = 0
8+
9+
// CHECK-LABEL: sil_coverage_map {{.*}} "$s17coverage_var_init1SV1jSivpfi" {{.*}} // variable initialization expression of coverage_var_init.S.j
10+
// CHECK-NEXT: [[@LINE+1]]:11 -> [[@LINE+1]]:16 : 0
11+
var j = 1 + 2
12+
13+
// CHECK-LABEL: sil_coverage_map {{.*}} "$s17coverage_var_init1SV1kSiycvpfi" {{.*}} // variable initialization expression of coverage_var_init.S.k
14+
// CHECK-NEXT: [[@LINE+3]]:11 -> [[@LINE+3]]:20 : 0
15+
// CHECK-LABEL: sil_coverage_map {{.*}} "$s17coverage_var_init1SV1kSiycvpfiSiycfU_" {{.*}} // closure #1 () -> Swift.Int in variable initialization expression of coverage_var_init.S.k
16+
// CHECK-NEXT: [[@LINE+1]]:11 -> [[@LINE+1]]:20 : 0
17+
var k = { 1 + 2 }
18+
19+
// CHECK-LABEL: sil_coverage_map {{.*}} "$s17coverage_var_init1SV1lSivpfi" {{.*}} // variable initialization expression of coverage_var_init.S.l
20+
// CHECK-NEXT: [[@LINE+1]]:11 -> [[@LINE+1]]:16 : 0
21+
var l = #line
22+
23+
// CHECK-LABEL: sil_coverage_map {{.*}} "$s17coverage_var_init1SV1mSaySiGvpfi" {{.*}} // variable initialization expression of coverage_var_init.S.m
24+
// CHECK-NEXT: [[@LINE+1]]:11 -> [[@LINE+1]]:20 : 0
25+
var m = [1, 2, 3]
26+
27+
// CHECK-LABEL: sil_coverage_map {{.*}} "$s17coverage_var_init1SV1nSSvpfi" {{.*}} // variable initialization expression of coverage_var_init.S.n
28+
// CHECK-NEXT: [[@LINE+3]]:11 -> [[@LINE+3]]:33 : 0
29+
// CHECK-NEXT: [[@LINE+2]]:26 -> [[@LINE+2]]:27 : 1
30+
// CHECK-NEXT: [[@LINE+1]]:30 -> [[@LINE+1]]:31 : (0 - 1)
31+
var n = "\(.random() ? 1 : 2)"
32+
}
33+
434
final class VarInit {
535
// CHECK: sil_coverage_map {{.*}} "$s17coverage_var_init7VarInitC018initializedWrapperE0SivpfP"
636
// CHECK-NEXT: [[@LINE+1]]:4 -> [[@LINE+1]]:42 : 0

0 commit comments

Comments
 (0)