forked from swiftlang/swift
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathdynamic_self.sil
27 lines (22 loc) · 992 Bytes
/
dynamic_self.sil
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
// RUN: %target-swift-frontend -emit-ir %s | FileCheck %s
// REQUIRES: CPU=i386_or_x86_64
sil_stage canonical
import Builtin
import Swift
protocol P {
func f() -> Self
}
// CHECK-LABEL: define void @_TF12dynamic_self23testExistentialDispatchFT1pPS_1P__T_
sil @_TF12dynamic_self23testExistentialDispatchFT1pPS_1P__T_ : $@convention(thin) (@in P) -> () {
bb0(%0 : $*P):
debug_value_addr %0 : $*P // let p // id: %1
%2 = alloc_stack $P // users: %3, %4, %12
copy_addr %0 to [initialization] %2#1 : $*P // id: %3
// CHECK: call %swift.opaque*
// CHECK: call %swift.opaque*
%4 = open_existential_addr %2#1 : $*P to $*@opened("01234567-89ab-cdef-0123-000000000000") P // users: %8, %10
dealloc_stack %2#0 : $*@local_storage P // id: %12
destroy_addr %0 : $*P // id: %13
%14 = tuple () // user: %15
return %14 : $() // id: %15
}