1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154
|
// RUN: %target-swift-frontend -Xllvm -sil-full-demangle -suppress-warnings -profile-generate -profile-coverage-mapping -emit-sorted-sil -emit-sil -module-name coverage_pound_if %s | %FileCheck %s
// RUN: %target-swift-frontend -profile-generate -profile-coverage-mapping -emit-ir %s
func poundIf1() -> Int {
#if true
#if true
return 1
#else
return 2
#endif
#else
#if true
return 3
#else
return 4
#endif
#endif
}
// CHECK-LABEL: sil_coverage_map {{.*}} "$s17coverage_pound_if0B3If1SiyF"
// CHECK-NEXT: [[@LINE-16]]:24 -> [[@LINE-2]]:2 : 0
// CHECK-NEXT: [[@LINE-16]]:3 -> [[@LINE-16]]:11 : skipped
// CHECK-NEXT: [[@LINE-16]]:5 -> [[@LINE-16]]:13 : skipped
// CHECK-NEXT: [[@LINE-15]]:5 -> [[@LINE-13]]:11 : skipped
// CHECK-NEXT: [[@LINE-13]]:3 -> [[@LINE-7]]:9 : skipped
// CHECK-NEXT: }
func poundIf2(_ x: [Int]) -> [Int] {
return x
#if false
.map { $0 + 1 }
#endif
}
// CHECK-LABEL: sil_coverage_map {{.*}} "$s17coverage_pound_if0B3If2ySaySiGACF"
// CHECK-NEXT: [[@LINE-7]]:36 -> [[@LINE-2]]:2 : 0
// CHECK-NEXT: [[@LINE-6]]:3 -> [[@LINE-4]]:9 : skipped
// CHECK-NEXT: }
func poundIf3() -> Any {
#if false
@objc
#endif
class C {}
return C()
}
// CHECK-LABEL: sil_coverage_map {{.*}} "$s17coverage_pound_if0B3If3ypyF"
// CHECK-NEXT: [[@LINE-8]]:24 -> [[@LINE-2]]:2 : 0
// CHECK-NEXT: [[@LINE-8]]:1 -> [[@LINE-6]]:7 : skipped
// CHECK-NEXT: }
func poundIf4(_ x: Bool) -> Int {
switch x {
#if true
case true:
return 0
#else
case false:
return 0
#endif
#if false
case false:
return 1
#endif
case false:
return 0
}
}
// CHECK-LABEL: sil_coverage_map {{.*}} "$s17coverage_pound_if0B3If4ySiSbF"
// CHECK-NEXT: [[@LINE-18]]:33 -> [[@LINE-2]]:2 : 0
// CHECK-NEXT: [[@LINE-18]]:10 -> [[@LINE-18]]:11 : 0
// CHECK-NEXT: [[@LINE-18]]:3 -> [[@LINE-18]]:11 : skipped
// CHECK-NEXT: [[@LINE-18]]:3 -> [[@LINE-17]]:13 : 1
// CHECK-NEXT: [[@LINE-17]]:3 -> [[@LINE-14]]:9 : skipped
// CHECK-NEXT: [[@LINE-14]]:3 -> [[@LINE-11]]:9 : skipped
// CHECK-NEXT: [[@LINE-11]]:3 -> [[@LINE-10]]:13 : 2
// CHECK-NEXT: }
func poundIf5() {
struct S {
#if false
var foo: Int
#else
var foo: Int
#endif
}
}
// CHECK-LABEL: sil_coverage_map {{.*}} "$s17coverage_pound_if0B3If5yyF"
// CHECK-NEXT: [[@LINE-10]]:17 -> [[@LINE-2]]:2 : 0
// CHECK-NEXT: [[@LINE-9]]:1 -> [[@LINE-7]]:6 : skipped
// CHECK-NEXT: [[@LINE-6]]:1 -> [[@LINE-6]]:7 : skipped
// CHECK-NEXT: }
func poundIf6() -> Int {
#if true
struct S {
var foo: Int
}
#else
struct S {
var foo: Int
}
#endif
return S(foo: 0).foo
}
// CHECK-LABEL: sil_coverage_map {{.*}} "$s17coverage_pound_if0B3If6SiyF"
// CHECK-NEXT: [[@LINE-13]]:24 -> [[@LINE-2]]:2 : 0
// CHECK-NEXT: [[@LINE-13]]:3 -> [[@LINE-13]]:11 : skipped
// CHECK-NEXT: [[@LINE-10]]:3 -> [[@LINE-6]]:9 : skipped
// CHECK-NEXT: }
func poundIf7() -> Int {
#if false
#endif
return 0
}
// CHECK-LABEL: sil_coverage_map {{.*}} "$s17coverage_pound_if0B3If7SiyF"
// CHECK-NEXT: [[@LINE-6]]:24 -> [[@LINE-2]]:2 : 0
// CHECK-NEXT: [[@LINE-6]]:3 -> [[@LINE-5]]:9 : skipped
// CHECK-NEXT: }
func poundIf8() -> Int {
#if true
#endif
return 0
}
// CHECK-LABEL: sil_coverage_map {{.*}} "$s17coverage_pound_if0B3If8SiyF"
// CHECK-NEXT: [[@LINE-6]]:24 -> [[@LINE-2]]:2 : 0
// CHECK-NEXT: [[@LINE-6]]:3 -> [[@LINE-6]]:11 : skipped
// CHECK-NEXT: [[@LINE-6]]:3 -> [[@LINE-6]]:9 : skipped
// CHECK-NEXT: }
func poundIf9() -> Int {
#if true
#else
#endif
return 0
}
// CHECK-LABEL: sil_coverage_map {{.*}} "$s17coverage_pound_if0B3If9SiyF"
// CHECK-NEXT: [[@LINE-7]]:24 -> [[@LINE-2]]:2 : 0
// CHECK-NEXT: [[@LINE-7]]:3 -> [[@LINE-7]]:11 : skipped
// CHECK-NEXT: [[@LINE-7]]:3 -> [[@LINE-6]]:9 : skipped
// CHECK-NEXT: }
func poundIf10() -> Int {
#if true
return 0
#else
return 1#endif
}
// CHECK-LABEL: sil_coverage_map {{.*}} "$s17coverage_pound_if0B4If10SiyF"
// CHECK-NEXT: [[@LINE-7]]:25 -> [[@LINE-2]]:2 : 0
// CHECK-NEXT: [[@LINE-7]]:3 -> [[@LINE-7]]:11 : skipped
// CHECK-NEXT: [[@LINE-6]]:3 -> [[@LINE-5]]:17 : skipped
// CHECK-NEXT: }
|