- Notifications
You must be signed in to change notification settings - Fork 10.5k
/
Copy pathcoverage_do.swift
52 lines (45 loc) · 2.04 KB
/
coverage_do.swift
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
// RUN: %target-swift-frontend -Xllvm -sil-full-demangle -suppress-warnings -profile-generate -profile-coverage-mapping -emit-sorted-sil -emit-sil -module-name coverage_do %s | %FileCheck %s
// RUN: %target-swift-frontend -profile-generate -profile-coverage-mapping -emit-ir %s
// CHECK-LABEL: sil hidden @$s11coverage_do3fooyyF : $@convention(thin) () -> ()
// CHECK: increment_profiler_counter 0
// CHECK: function_ref @$sSb6randomSbyFZ
// CHECK: cond_br {{%[0-9]+}}, [[EXITBB:bb[0-9]]], [[BB1:bb[0-9]]]
// CHECK: [[BB1]]
// CHECK: function_ref @$sSb6randomSbyFZ
// CHECK: cond_br {{%[0-9]+}}, [[BRKBB:bb[0-9]]], {{bb[0-9]}}
// CHECK: [[BRKBB]]
// CHECK-NEXT: increment_profiler_counter 2
// CHECK: [[EXITBB]]
// CHECK-NEXT: increment_profiler_counter 1
// CHECK-LABEL: sil_coverage_map {{.*}} "$s11coverage_do3fooyyF"
func foo(){ // CHECK-NEXT: [[@LINE]]:12 -> [[@LINE+11]]:2 : 0
x:do{ // CHECK-NEXT: [[@LINE]]:9 -> [[@LINE+8]]:4 : 0
if.random(){ // CHECK-NEXT: [[@LINE]]:8 -> [[@LINE]]:17 : 0
return // CHECK-NEXT: [[@LINE-1]]:18 -> [[@LINE+1]]:6 : 1
} // CHECK-NEXT: [[@LINE]]:6 -> [[@LINE+4]]:11 : (0 - 1)
if.random(){ // CHECK-NEXT: [[@LINE]]:8 -> [[@LINE]]:17 : (0 - 1)
break x // CHECK-NEXT: [[@LINE-1]]:18 -> [[@LINE+1]]:6 : 2
} // CHECK-NEXT: [[@LINE]]:6 -> [[@LINE+1]]:11 : ((0 - 1) - 2)
return
} // CHECK-NEXT: [[@LINE]]:4 -> [[@LINE+2]]:2 : 2
do{} // CHECK-NEXT: [[@LINE]]:6 -> [[@LINE]]:8 : 2
} // CHECK-NEXT: [[@LINE-1]]:8 -> [[@LINE]]:2 : 2
// CHECK-NEXT: }
// CHECK-LABEL: sil_coverage_map {{.*}} "$s11coverage_do4foobyyF"
func foob(){
x:do{
do{
if.random(){return}
// CHECK: [[@LINE+1]]:6 -> [[@LINE+10]]:4 : (0 - 1)
}
do{
if.random(){break x }
// CHECK: [[@LINE+1]]:6 -> [[@LINE+6]]:4 : ((0 - 1) - 2)
}
do{
return
// CHECK-NOT: zero
}
}
do{}
}