File: coverage_do.swift

package info (click to toggle)
swiftlang 6.0.3-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 2,519,992 kB
  • sloc: cpp: 9,107,863; ansic: 2,040,022; asm: 1,135,751; python: 296,500; objc: 82,456; f90: 60,502; lisp: 34,951; pascal: 19,946; sh: 18,133; perl: 7,482; ml: 4,937; javascript: 4,117; makefile: 3,840; awk: 3,535; xml: 914; fortran: 619; cs: 573; ruby: 573
file content (52 lines) | stat: -rw-r--r-- 2,093 bytes parent folder | download
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 {}
}