// 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!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: @_TFC4main1X4pingfS0_FT_T_ // main.X.ping (main.X)() -> () #X.init!initializer: @_TFC4main1XcfMS0_FT_S0_ // main.X.init (main.X.Type)() -> main.X }