File: inline_tryApply.sil

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 (36 lines) | stat: -rw-r--r-- 1,176 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
// RUN: %target-sil-opt -enable-sil-verify-all %s -early-inline -sil-inline-threshold=50 | %FileCheck %s

sil_stage canonical

import Builtin
import Swift
import SwiftShims


//CHECK-LABEL: sil @caller_function
//CHECK-NOT: try_apply
//CHECK: throw {{.*}} : $any Error
sil @caller_function : $@convention(thin) () -> @error Error {
bb0:
  // function_ref main.inner () throws -> ()
  %0 = function_ref @callee_function : $@convention(thin) () -> @error Error // user: %1
  try_apply %0() : $@convention(thin) () -> @error Error, normal bb1, error bb2 // id: %1

bb1(%2 : $()):                                    // Preds: bb0
  %3 = tuple ()                                   // user: %4
  return %3 : $()                                 // id: %4

bb2(%5 : $Error):                             // Preds: bb0
  throw %5 : $Error                           // id: %6
}

//CHECK-LABEL: sil [always_inline] @callee_function
//CHECK: return

// main.inner () throws -> ()
sil [always_inline] @callee_function : $@convention(thin) () -> @error Error {
bb0:
  %0 = tuple ()                                   // user: %1
  return %0 : $()                                 // id: %1
}