blob: 92b581e5bababc2ec762288bf36c75043fdda9c3 [file] [log] [blame]
// RUN: %target-sil-opt -enable-objc-interop -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
}