// RUN: %target-swift-frontend -emit-ir %s | %FileCheck %s // radar://16375832 sil_stage raw import Builtin import Swift protocol P { } struct X : P { } struct S { func foo(t: T) } // test.S.foo (test.S)(A) -> () sil @_TFV4test1S3foofS0_US_1P__FQ_T_ : $@convention(method) (@in T, S) -> () // CHECK-LABEL: define{{( dllexport)?}}{{( protected)?}} swiftcc void @_TF4test3barFTVS_1SVS_1X_T_() // CHECK: call // test.bar (test.S, test.X) -> () sil [ossa] @_TF4test3barFTVS_1SVS_1X_T_ : $@convention(thin) (S, X) -> () { bb0(%0 : $S, %1 : $X): debug_value %0 : $S // let s // id: %2 debug_value %1 : $X // let x // id: %3 // function_ref test.S.foo (test.S)(A) -> () %4 = function_ref @_TFV4test1S3foofS0_US_1P__FQ_T_ : $@convention(method) <τ_0_0 where τ_0_0 : P> (@in τ_0_0, S) -> () // user: %7 %5 = alloc_stack $X // users: %6, %7, %8 store %1 to [trivial] %5 : $*X // id: %6 %7 = apply %4(%5, %0) : $@convention(method) <τ_0_0 where τ_0_0 : P> (@in τ_0_0, S) -> () dealloc_stack %5 : $*X // id: %8 %9 = tuple () // user: %10 return %9 : $() // id: %10 } sil_witness_table X: P module test { }