| // RUN: %target-sil-opt -assume-parsing-unqualified-ownership-sil -enable-sil-verify-all %s -specdevirt -code-sinking | %FileCheck %s |
| |
| sil_stage canonical |
| |
| import Builtin |
| import Swift |
| |
| @objc class X { |
| @objc func ping() |
| } |
| |
| sil @_TFC4main1X4pingfS0_FT_T_ : $@convention(method) (@guaranteed X) -> () |
| sil @_TFC4main1XcfMS0_FT_S0_ : $@convention(method) (@owned X) -> @owned X |
| |
| // CHECK-LABEL: _TFC4main1X4pingfS0_FT_T_ |
| // CHECK-NOT: checked_cast_br identical |
| // CHECK: return |
| sil @_TF4main1fFCS_1XT_ : $@convention(thin) (@owned X) -> () { |
| bb0(%0 : $X): |
| debug_value %0 : $X, let, name "x" // id: %1 |
| strong_retain %0 : $X // id: %2 |
| %3 = objc_method %0 : $X, #X.ping!1.foreign : (X) -> () -> () , $@convention(objc_method) (X) -> () // user: %4 |
| %4 = apply %3(%0) : $@convention(objc_method) (X) -> () |
| strong_release %0 : $X // id: %5 |
| strong_release %0 : $X // id: %6 |
| %7 = tuple () // user: %8 |
| return %7 : $() // id: %8 |
| } |
| |
| sil_vtable X { |
| #X.ping!1: @_TFC4main1X4pingfS0_FT_T_ // main.X.ping (main.X)() -> () |
| #X.init!initializer.1: @_TFC4main1XcfMS0_FT_S0_ // main.X.init (main.X.Type)() -> main.X |
| } |
| |
| |
| |