mirror of
https://github.com/apple/swift.git
synced 2025-12-14 20:36:38 +01:00
46 lines
1.9 KiB
Plaintext
46 lines
1.9 KiB
Plaintext
// 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) Self
|
|
%3 = witness_method $@opened("214EF566-CD33-11E6-A1F0-34363BD08DA0", P) Self, #P.f7, %2 : $*@opened("214EF566-CD33-11E6-A1F0-34363BD08DA0", P) Self : $@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) Self>(%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) Self>(%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 [init] %4 : $*τ_0_0
|
|
%6 = tuple ()
|
|
dealloc_stack %2 : $*τ_0_0
|
|
return %6 : $()
|
|
}
|
|
|
|
sil_default_witness_table hidden P {
|
|
no_default
|
|
}
|