5
5
6
6
import weak_import_native_helper
7
7
8
- // CHECK-DAG: @"$s25weak_import_native_helper23ProtocolWithWeakMembersP1TAC_AA05OtherE0Tn" = extern_weak global %swift.protocol_requirement
9
- // CHECK-DAG: @"$s1T25weak_import_native_helper23ProtocolWithWeakMembersPTl" = extern_weak global %swift.protocol_requirement
10
- // CHECK-DAG: @"$s25weak_import_native_helper23ProtocolWithWeakMembersP1fyyFTq" = extern_weak global %swift.method_descriptor
11
- // CHECK-DAG: declare extern_weak swiftcc void @"$s25weak_import_native_helper23ProtocolWithWeakMembersPAAE1fyyF"(%swift.type*, i8**, %swift.opaque* noalias nocapture swiftself)
8
+ // CHECK-DAG-LABEL : @"$s25weak_import_native_helper23ProtocolWithWeakMembersP1TAC_AA05OtherE0Tn" = extern_weak global %swift.protocol_requirement
9
+ // CHECK-DAG-LABEL : @"$s1T25weak_import_native_helper23ProtocolWithWeakMembersPTl" = extern_weak global %swift.protocol_requirement
10
+ // CHECK-DAG-LABEL : @"$s25weak_import_native_helper23ProtocolWithWeakMembersP1fyyFTq" = extern_weak global %swift.method_descriptor
11
+ // CHECK-DAG-LABEL : declare extern_weak swiftcc void @"$s25weak_import_native_helper23ProtocolWithWeakMembersPAAE1fyyF"(%swift.type*, i8**, %swift.opaque* noalias nocapture swiftself)
12
12
struct ConformsToProtocolWithWeakMembers : ProtocolWithWeakMembers { }
13
13
14
14
func testTopLevel( ) {
15
- // CHECK-DAG: declare extern_weak {{.+}} @"$s25weak_import_native_helper2fnyyF"()
15
+ // CHECK-DAG-LABEL : declare extern_weak {{.+}} @"$s25weak_import_native_helper2fnyyF"()
16
16
fn ( )
17
17
18
- // CHECK-DAG: declare extern_weak {{.+}} @"$s25weak_import_native_helper12globalStoredSivg"
19
- // CHECK-DAG: declare extern_weak {{.+}} @"$s25weak_import_native_helper12globalStoredSivs"
18
+ // CHECK-DAG-LABEL : declare extern_weak {{.+}} @"$s25weak_import_native_helper12globalStoredSivg"
19
+ // CHECK-DAG-LABEL : declare extern_weak {{.+}} @"$s25weak_import_native_helper12globalStoredSivs"
20
20
let x = globalStored
21
21
globalStored = x
22
22
globalStored += 1
23
23
24
- // CHECK-DAG: declare extern_weak {{.+}} @"$s25weak_import_native_helper14globalComputedSivg"
25
- // CHECK-DAG: declare extern_weak {{.+}} @"$s25weak_import_native_helper14globalComputedSivs"
24
+ // CHECK-DAG-LABEL : declare extern_weak {{.+}} @"$s25weak_import_native_helper14globalComputedSivg"
25
+ // CHECK-DAG-LABEL : declare extern_weak {{.+}} @"$s25weak_import_native_helper14globalComputedSivs"
26
26
let y = globalComputed
27
27
globalComputed = y
28
28
globalComputed += 1
29
29
}
30
30
31
31
func testStruct( ) {
32
- // CHECK-DAG: declare extern_weak {{.+}} @"$s25weak_import_native_helper1SVACycfC"
32
+ // CHECK-DAG-LABEL : declare extern_weak {{.+}} @"$s25weak_import_native_helper1SVACycfC"
33
33
var s = S ( )
34
34
35
- // CHECK-DAG: declare extern_weak {{.+}} @"$s25weak_import_native_helper1SV2fnyyF"
35
+ // CHECK-DAG-LABEL : declare extern_weak {{.+}} @"$s25weak_import_native_helper1SV2fnyyF"
36
36
s. fn ( )
37
37
38
- // CHECK-DAG: declare extern_weak {{.+}} @"$s25weak_import_native_helper1SV10storedPropSivg"
39
- // CHECK-DAG: declare extern_weak {{.+}} @"$s25weak_import_native_helper1SV10storedPropSivs"
40
- // CHECK-DAG: declare extern_weak {{.+}} @"$s25weak_import_native_helper1SV10storedPropSivM"
38
+ // CHECK-DAG-LABEL : declare extern_weak {{.+}} @"$s25weak_import_native_helper1SV10storedPropSivg"
39
+ // CHECK-DAG-LABEL : declare extern_weak {{.+}} @"$s25weak_import_native_helper1SV10storedPropSivs"
40
+ // CHECK-DAG-LABEL : declare extern_weak {{.+}} @"$s25weak_import_native_helper1SV10storedPropSivM"
41
41
let x = s. storedProp
42
42
s. storedProp = x
43
43
s. storedProp += 1
44
44
45
- // CHECK-DAG: declare extern_weak {{.+}} @"$s25weak_import_native_helper1SV12computedPropSivg"
46
- // CHECK-DAG: declare extern_weak {{.+}} @"$s25weak_import_native_helper1SV12computedPropSivs"
47
- // CHECK-DAG: declare extern_weak {{.+}} @"$s25weak_import_native_helper1SV12computedPropSivM"
45
+ // CHECK-DAG-LABEL : declare extern_weak {{.+}} @"$s25weak_import_native_helper1SV12computedPropSivg"
46
+ // CHECK-DAG-LABEL : declare extern_weak {{.+}} @"$s25weak_import_native_helper1SV12computedPropSivs"
47
+ // CHECK-DAG-LABEL : declare extern_weak {{.+}} @"$s25weak_import_native_helper1SV12computedPropSivM"
48
48
let y = s. computedProp
49
49
s. computedProp = y
50
50
s. computedProp += 1
51
51
52
- // CHECK-DAG: declare extern_weak {{.+}} @"$s25weak_import_native_helper1SVyS2icig"
53
- // CHECK-DAG: declare extern_weak {{.+}} @"$s25weak_import_native_helper1SVyS2icis"
54
- // CHECK-DAG: declare extern_weak {{.+}} @"$s25weak_import_native_helper1SVyS2iciM"
52
+ // CHECK-DAG-LABEL : declare extern_weak {{.+}} @"$s25weak_import_native_helper1SVyS2icig"
53
+ // CHECK-DAG-LABEL : declare extern_weak {{.+}} @"$s25weak_import_native_helper1SVyS2icis"
54
+ // CHECK-DAG-LABEL : declare extern_weak {{.+}} @"$s25weak_import_native_helper1SVyS2iciM"
55
55
let z = s [ 0 ]
56
56
s [ 0 ] = z
57
57
s [ 0 ] += 1
58
58
59
- // CHECK-DAG: declare extern_weak {{.+}} @"$s25weak_import_native_helper5WeakSV0A6MemberyyF"
59
+ // CHECK-DAG-LABEL : declare extern_weak {{.+}} @"$s25weak_import_native_helper5WeakSV0A6MemberyyF"
60
60
let w = WeakS ( )
61
61
w. weakMember ( )
62
62
}
63
63
64
64
func testEnum( ) {
65
- // CHECK-DAG: @"$s25weak_import_native_helper1EO6strongyA2CmFWC" = external constant i32
65
+ // CHECK-DAG-LABEL : @"$s25weak_import_native_helper1EO6strongyA2CmFWC" = external constant i32
66
66
_ = E . strong
67
67
68
- // CHECK-DAG: @"$s25weak_import_native_helper1EO0A0yA2CmFWC" = extern_weak constant i32
68
+ // CHECK-DAG-LABEL : @"$s25weak_import_native_helper1EO0A0yA2CmFWC" = extern_weak constant i32
69
69
_ = E . weak
70
70
71
- // CHECK-DAG: @"$s25weak_import_native_helper1EO11strongAssocyACSicACmFWC" = external constant i32
71
+ // CHECK-DAG-LABEL : @"$s25weak_import_native_helper1EO11strongAssocyACSicACmFWC" = external constant i32
72
72
_ = E . strongAssoc ( 0 )
73
73
74
- // CHECK-DAG: @"$s25weak_import_native_helper1EO0A5AssocyACSicACmFWC" = extern_weak constant i32
74
+ // CHECK-DAG-LABEL : @"$s25weak_import_native_helper1EO0A5AssocyACSicACmFWC" = extern_weak constant i32
75
75
_ = E . weakAssoc ( 0 )
76
76
}
77
77
78
78
func testClass( ) {
79
- // CHECK-DAG: declare extern_weak {{.+}} @"$s25weak_import_native_helper1CCACycfC"
79
+ // CHECK-DAG-LABEL : declare extern_weak {{.+}} @"$s25weak_import_native_helper1CCACycfC"
80
80
let c = C ( )
81
81
82
- // CHECK-DAG: declare extern_weak {{.+}} @"$s25weak_import_native_helper1CC2fnyyFTj"
82
+ // CHECK-DAG-LABEL : declare extern_weak {{.+}} @"$s25weak_import_native_helper1CC2fnyyFTj"
83
83
c. fn ( )
84
84
85
- // CHECK-DAG: declare extern_weak swiftcc {{.+}} @"$s25weak_import_native_helper1CC10storedPropSivgTj"
86
- // CHECK-DAG: declare extern_weak swiftcc {{.+}} @"$s25weak_import_native_helper1CC10storedPropSivsTj"
87
- // CHECK-DAG: declare extern_weak swiftcc {{.+}} @"$s25weak_import_native_helper1CC10storedPropSivMTj"
85
+ // CHECK-DAG-LABEL : declare extern_weak swiftcc {{.+}} @"$s25weak_import_native_helper1CC10storedPropSivgTj"
86
+ // CHECK-DAG-LABEL : declare extern_weak swiftcc {{.+}} @"$s25weak_import_native_helper1CC10storedPropSivsTj"
87
+ // CHECK-DAG-LABEL : declare extern_weak swiftcc {{.+}} @"$s25weak_import_native_helper1CC10storedPropSivMTj"
88
88
let x = c. storedProp
89
89
c. storedProp = x
90
90
c. storedProp += 1
91
91
92
- // CHECK-DAG: declare extern_weak swiftcc {{.+}} @"$s25weak_import_native_helper1CC12computedPropSivgTj"
93
- // CHECK-DAG: declare extern_weak swiftcc {{.+}} @"$s25weak_import_native_helper1CC12computedPropSivsTj"
94
- // CHECK-DAG: declare extern_weak swiftcc {{.+}} @"$s25weak_import_native_helper1CC12computedPropSivMTj"
92
+ // CHECK-DAG-LABEL : declare extern_weak swiftcc {{.+}} @"$s25weak_import_native_helper1CC12computedPropSivgTj"
93
+ // CHECK-DAG-LABEL : declare extern_weak swiftcc {{.+}} @"$s25weak_import_native_helper1CC12computedPropSivsTj"
94
+ // CHECK-DAG-LABEL : declare extern_weak swiftcc {{.+}} @"$s25weak_import_native_helper1CC12computedPropSivMTj"
95
95
let y = c. computedProp
96
96
c. computedProp = y
97
97
c. computedProp += 1
98
98
99
- // CHECK-DAG: declare extern_weak swiftcc {{.+}} @"$s25weak_import_native_helper1CCyS2icigTj"
100
- // CHECK-DAG: declare extern_weak swiftcc {{.+}} @"$s25weak_import_native_helper1CCyS2icisTj"
101
- // CHECK-DAG: declare extern_weak swiftcc {{.+}} @"$s25weak_import_native_helper1CCyS2iciMTj"
99
+ // CHECK-DAG-LABEL : declare extern_weak swiftcc {{.+}} @"$s25weak_import_native_helper1CCyS2icigTj"
100
+ // CHECK-DAG-LABEL : declare extern_weak swiftcc {{.+}} @"$s25weak_import_native_helper1CCyS2icisTj"
101
+ // CHECK-DAG-LABEL : declare extern_weak swiftcc {{.+}} @"$s25weak_import_native_helper1CCyS2iciMTj"
102
102
let z = c [ 0 ]
103
103
c [ 0 ] = z
104
104
c [ 0 ] += 1
@@ -108,33 +108,33 @@ class Sub : C {
108
108
deinit {
109
109
// This is correctly a strong symbol reference; the class is not declared
110
110
// weak.
111
- // CHECK-DAG: declare swiftcc {{.+}} @"$s25weak_import_native_helper1CCfd"
111
+ // CHECK-DAG-LABEL : declare swiftcc {{.+}} @"$s25weak_import_native_helper1CCfd"
112
112
}
113
113
}
114
114
115
115
func testProtocolExistential( _ p: P ) {
116
116
var mutP = p
117
117
118
- // CHECK-DAG: declare extern_weak {{.+}} @"$s25weak_import_native_helper1PP2fnyyFTj"
118
+ // CHECK-DAG-LABEL : declare extern_weak {{.+}} @"$s25weak_import_native_helper1PP2fnyyFTj"
119
119
p. fn ( )
120
120
121
- // CHECK-DAG: declare extern_weak swiftcc {{.+}} @"$s25weak_import_native_helper1PP4propSivgTj"
122
- // CHECK-DAG: declare extern_weak swiftcc {{.+}} @"$s25weak_import_native_helper1PP4propSivsTj"
123
- // CHECK-DAG: declare extern_weak swiftcc {{.+}} @"$s25weak_import_native_helper1PP4propSivMTj"
121
+ // CHECK-DAG-LABEL : declare extern_weak swiftcc {{.+}} @"$s25weak_import_native_helper1PP4propSivgTj"
122
+ // CHECK-DAG-LABEL : declare extern_weak swiftcc {{.+}} @"$s25weak_import_native_helper1PP4propSivsTj"
123
+ // CHECK-DAG-LABEL : declare extern_weak swiftcc {{.+}} @"$s25weak_import_native_helper1PP4propSivMTj"
124
124
let x = p. prop
125
125
mutP. prop = x
126
126
mutP. prop += 1
127
127
128
- // CHECK-DAG: declare extern_weak swiftcc {{.+}} @"$s25weak_import_native_helper1PPyS2icigTj"
129
- // CHECK-DAG: declare extern_weak swiftcc {{.+}} @"$s25weak_import_native_helper1PPyS2icisTj"
130
- // CHECK-DAG: declare extern_weak swiftcc {{.+}} @"$s25weak_import_native_helper1PPyS2iciMTj"
128
+ // CHECK-DAG-LABEL : declare extern_weak swiftcc {{.+}} @"$s25weak_import_native_helper1PPyS2icigTj"
129
+ // CHECK-DAG-LABEL : declare extern_weak swiftcc {{.+}} @"$s25weak_import_native_helper1PPyS2icisTj"
130
+ // CHECK-DAG-LABEL : declare extern_weak swiftcc {{.+}} @"$s25weak_import_native_helper1PPyS2iciMTj"
131
131
let z = p [ 0 ]
132
132
mutP [ 0 ] = z
133
133
mutP [ 0 ] += 1
134
134
}
135
135
136
136
func testProtocolGeneric< Impl: P > ( _ type: Impl . Type ) {
137
- // CHECK-DAG: declare extern_weak {{.+}} @"$s25weak_import_native_helper1PPxycfCTj"
137
+ // CHECK-DAG-LABEL : declare extern_weak {{.+}} @"$s25weak_import_native_helper1PPxycfCTj"
138
138
var mutP = type. init ( )
139
139
140
140
mutP. fn ( )
@@ -149,29 +149,84 @@ func testProtocolGeneric<Impl: P>(_ type: Impl.Type) {
149
149
}
150
150
151
151
func testWeakTypes( ) -> [ Any . Type ] {
152
- // CHECK-DAG: declare extern_weak swiftcc %swift.metadata_response @"$s25weak_import_native_helper5WeakSVMa"
153
- // CHECK-DAG: declare extern_weak swiftcc %swift.metadata_response @"$s25weak_import_native_helper5WeakEOMa"
154
- // CHECK-DAG: declare extern_weak swiftcc %swift.metadata_response @"$s25weak_import_native_helper5WeakCCMa"
155
- // CHECK-DAG: @"$s25weak_import_native_helper5WeakPMp" = extern_weak global %swift.protocol
156
- // CHECK-DAG: declare extern_weak swiftcc %swift.metadata_response @"$s25weak_import_native_helper8GenericSVMa"
157
- // CHECK-DAG: declare extern_weak swiftcc %swift.metadata_response @"$s25weak_import_native_helper8GenericEOMa"
158
- // CHECK-DAG: declare extern_weak swiftcc %swift.metadata_response @"$s25weak_import_native_helper8GenericCCMa"
152
+ // CHECK-DAG-LABEL : declare extern_weak swiftcc %swift.metadata_response @"$s25weak_import_native_helper5WeakSVMa"
153
+ // CHECK-DAG-LABEL : declare extern_weak swiftcc %swift.metadata_response @"$s25weak_import_native_helper5WeakEOMa"
154
+ // CHECK-DAG-LABEL : declare extern_weak swiftcc %swift.metadata_response @"$s25weak_import_native_helper5WeakCCMa"
155
+ // CHECK-DAG-LABEL : @"$s25weak_import_native_helper5WeakPMp" = extern_weak global %swift.protocol
156
+ // CHECK-DAG-LABEL : declare extern_weak swiftcc %swift.metadata_response @"$s25weak_import_native_helper8GenericSVMa"
157
+ // CHECK-DAG-LABEL : declare extern_weak swiftcc %swift.metadata_response @"$s25weak_import_native_helper8GenericEOMa"
158
+ // CHECK-DAG-LABEL : declare extern_weak swiftcc %swift.metadata_response @"$s25weak_import_native_helper8GenericCCMa"
159
159
return [ WeakS . self, WeakE . self, WeakC . self, WeakP . self, GenericS< Int> . self , GenericE< Int> . self , GenericC< Int> . self ]
160
160
}
161
161
162
162
class WeakSub : WeakC {
163
163
deinit {
164
- // CHECK-DAG: declare extern_weak swiftcc {{.+}} @"$s25weak_import_native_helper5WeakCCfd"
164
+ // CHECK-DAG-LABEL : declare extern_weak swiftcc {{.+}} @"$s25weak_import_native_helper5WeakCCfd"
165
165
}
166
166
}
167
167
168
168
class WeakGenericSub : GenericC < Int > {
169
169
deinit {
170
- // CHECK-DAG: declare extern_weak swiftcc {{.+}} @"$s25weak_import_native_helper8GenericCCfd"
170
+ // CHECK-DAG-LABEL : declare extern_weak swiftcc {{.+}} @"$s25weak_import_native_helper8GenericCCfd"
171
171
}
172
172
}
173
173
174
174
protocol RefinesP : BaseP { }
175
175
176
- // CHECK-DAG: @"$s25weak_import_native_helper1SVAA5BasePAAWP" = extern_weak global i8*
176
+ // CHECK-DAG-LABEL : @"$s25weak_import_native_helper1SVAA5BasePAAWP" = extern_weak global i8*
177
177
extension S : RefinesP { }
178
+
179
+ // We should not hoist the metadata accessor accross the version check.
180
+
181
+ // CHECK-DAG-LABEL: define{{.*}} void @"$s18weak_import_native28test_not_hoist_weakly_linkedyyF"()
182
+ // CHECK-NOT: 15ResilientStructVMa
183
+ // CHECK: getVersion
184
+ // CHECK: br
185
+ // CHECK: 15ResilientStructVMa
186
+ // CHECK: ret
187
+
188
+ public func test_not_hoist_weakly_linked( ) {
189
+ if getVersion ( ) == 1 {
190
+ var _ = ResilientStruct ( )
191
+ }
192
+ }
193
+
194
+ // CHECK-DAG-LABEL: define{{.*}} void @"$s18weak_import_native29test_not_hoist_weakly_linked2yyF"()
195
+ // CHECK-NOT: 15ResilientStructVMa
196
+ // CHECK: getVersion
197
+ // CHECK: br
198
+ // CHECK: 15ResilientStructVMa
199
+ // CHECK: ret
200
+ public func test_not_hoist_weakly_linked2( ) {
201
+ if getVersion ( ) == 1 {
202
+ var _ = ( ResilientStruct ( ) , 1 )
203
+ }
204
+ }
205
+
206
+ struct One < T> {
207
+ var elt : T ?
208
+ }
209
+
210
+ // CHECK-DAG-LABEL: define{{.*}} void @"$s18weak_import_native29test_not_hoist_weakly_linked3yyF"()
211
+ // CHECK-NOT: 15ResilientStructVMa
212
+ // CHECK: getVersion
213
+ // CHECK: br
214
+ // CHECK: 15ResilientStructVMa
215
+ // CHECK: ret
216
+ public func test_not_hoist_weakly_linked3( ) {
217
+ if getVersion ( ) == 1 {
218
+ var _ = One ( elt: ResilientStruct ( ) )
219
+ }
220
+ }
221
+
222
+ // CHECK-DAG-LABEL: define{{.*}} void @"$s18weak_import_native29test_not_hoist_weakly_linked4yyF"()
223
+ // CHECK-NOT: 15ResilientStructVMa
224
+ // CHECK: getVersion
225
+ // CHECK: br
226
+ // CHECK: 15ResilientStructVMa
227
+ // CHECK: ret
228
+ public func test_not_hoist_weakly_linked4( ) {
229
+ if getVersion ( ) == 1 {
230
+ var _ = One ( elt: ( ResilientStruct ( ) , 1 ) )
231
+ }
232
+ }
0 commit comments