blob: 39978a4c93bae8fe51bf80898dbc84796afd864b [file] [log] [blame]
// RUN: %target-sil-opt -enable-sil-verify-all %s -mandatory-inlining
sil_stage raw
import Builtin
import Swift
import SwiftShims
protocol P {
func f7() -> () -> Self
}
sil hidden [ossa] @caller : $@convention(thin) (@in P) -> () {
bb0(%0 : $*P):
%2 = open_existential_addr immutable_access %0 : $*P to $*@opened("214EF566-CD33-11E6-A1F0-34363BD08DA0") P
%3 = witness_method $@opened("214EF566-CD33-11E6-A1F0-34363BD08DA0") P, #P.f7!1, %2 : $*@opened("214EF566-CD33-11E6-A1F0-34363BD08DA0") P : $@convention(witness_method: P) <τ_0_0 where τ_0_0 : P> (@in_guaranteed τ_0_0) -> @owned @callee_owned () -> @out τ_0_0
%4 = apply %3<@opened("214EF566-CD33-11E6-A1F0-34363BD08DA0") P>(%2) : $@convention(witness_method: P) _0_0 where τ_0_0 : P> (@in_guaranteed τ_0_0) -> @owned @callee_owned () -> @out τ_0_0
%5 = function_ref @callee : $@convention(thin) _0_0 where τ_0_0 : P> (@owned @callee_owned () -> @out τ_0_0) -> @out P
%6 = partial_apply %5<@opened("214EF566-CD33-11E6-A1F0-34363BD08DA0") P>(%4) : $@convention(thin) _0_0 where τ_0_0 : P> (@owned @callee_owned () -> @out τ_0_0) -> @out P
%9 = alloc_stack $P
%8 = copy_value %6 : $@callee_owned () -> @out P
%10 = apply %8(%9) : $@callee_owned () -> @out P
destroy_addr %9 : $*P
dealloc_stack %9 : $*P
destroy_value %6 : $@callee_owned () -> @out P
destroy_addr %0 : $*P
%15 = tuple ()
return %15 : $()
}
sil hidden [transparent] [ossa] @callee : $@convention(thin) _0_0 where τ_0_0 : P> (@owned @callee_owned () -> @out τ_0_0) -> @out P {
bb0(%0 : $*P, %1 : @owned $@callee_owned () -> @out τ_0_0):
%2 = alloc_stack $τ_0_0
%3 = apply %1(%2) : $@callee_owned () -> @out τ_0_0
%4 = init_existential_addr %0 : $*P, $τ_0_0
copy_addr [take] %2 to [initialization] %4 : $_0_0
%6 = tuple ()
dealloc_stack %2 : $_0_0
return %6 : $()
}
sil_default_witness_table hidden P {
no_default
}