77
88import weak_import_native_helper
99
10- // CHECK-DAG-LABEL : @"$s25weak_import_native_helper23ProtocolWithWeakMembersP1TAC_AA05OtherE0Tn" = extern_weak global %swift.protocol_requirement
11- // CHECK-DAG-LABEL : @"$s1T25weak_import_native_helper23ProtocolWithWeakMembersPTl" = extern_weak global %swift.protocol_requirement
12- // CHECK-DAG-LABEL : @"$s25weak_import_native_helper23ProtocolWithWeakMembersP1fyyFTq" = extern_weak global %swift.method_descriptor
13- // CHECK-DAG-LABEL : declare extern_weak swiftcc void @"$s25weak_import_native_helper23ProtocolWithWeakMembersPAAE1fyyF"(%swift.type*, i8**, %swift.opaque* noalias nocapture swiftself)
10+ // CHECK-DAG: @"$s25weak_import_native_helper23ProtocolWithWeakMembersP1TAC_AA05OtherE0Tn" = extern_weak global %swift.protocol_requirement
11+ // CHECK-DAG: @"$s1T25weak_import_native_helper23ProtocolWithWeakMembersPTl" = extern_weak global %swift.protocol_requirement
12+ // CHECK-DAG: @"$s25weak_import_native_helper23ProtocolWithWeakMembersP1fyyFTq" = extern_weak global %swift.method_descriptor
13+ // CHECK-DAG: declare extern_weak swiftcc void @"$s25weak_import_native_helper23ProtocolWithWeakMembersPAAE1fyyF"(%swift.type*, i8**, %swift.opaque* noalias nocapture swiftself)
1414struct ConformsToProtocolWithWeakMembers : ProtocolWithWeakMembers { }
1515
1616func testTopLevel( ) {
17- // CHECK-DAG-LABEL : declare extern_weak {{.+}} @"$s25weak_import_native_helper2fnyyF"()
17+ // CHECK-DAG: declare extern_weak {{.+}} @"$s25weak_import_native_helper2fnyyF"()
1818 fn ( )
1919
20- // CHECK-DAG-LABEL : declare extern_weak {{.+}} @"$s25weak_import_native_helper12globalStoredSivg"
21- // CHECK-DAG-LABEL : declare extern_weak {{.+}} @"$s25weak_import_native_helper12globalStoredSivs"
20+ // CHECK-DAG: declare extern_weak {{.+}} @"$s25weak_import_native_helper12globalStoredSivg"
21+ // CHECK-DAG: declare extern_weak {{.+}} @"$s25weak_import_native_helper12globalStoredSivs"
2222 let x = globalStored
2323 globalStored = x
2424 globalStored += 1
2525
26- // CHECK-DAG-LABEL : declare extern_weak {{.+}} @"$s25weak_import_native_helper14globalComputedSivg"
27- // CHECK-DAG-LABEL : declare extern_weak {{.+}} @"$s25weak_import_native_helper14globalComputedSivs"
26+ // CHECK-DAG: declare extern_weak {{.+}} @"$s25weak_import_native_helper14globalComputedSivg"
27+ // CHECK-DAG: declare extern_weak {{.+}} @"$s25weak_import_native_helper14globalComputedSivs"
2828 let y = globalComputed
2929 globalComputed = y
3030 globalComputed += 1
3131}
3232
3333func testStruct( ) {
34- // CHECK-DAG-LABEL : declare extern_weak {{.+}} @"$s25weak_import_native_helper1SVACycfC"
34+ // CHECK-DAG: declare extern_weak {{.+}} @"$s25weak_import_native_helper1SVACycfC"
3535 var s = S ( )
3636
37- // CHECK-DAG-LABEL : declare extern_weak {{.+}} @"$s25weak_import_native_helper1SV2fnyyF"
37+ // CHECK-DAG: declare extern_weak {{.+}} @"$s25weak_import_native_helper1SV2fnyyF"
3838 s. fn ( )
3939
40- // CHECK-DAG-LABEL : declare extern_weak {{.+}} @"$s25weak_import_native_helper1SV10storedPropSivg"
41- // CHECK-DAG-LABEL : declare extern_weak {{.+}} @"$s25weak_import_native_helper1SV10storedPropSivs"
42- // CHECK-DAG-LABEL : declare extern_weak {{.+}} @"$s25weak_import_native_helper1SV10storedPropSivM"
40+ // CHECK-DAG: declare extern_weak {{.+}} @"$s25weak_import_native_helper1SV10storedPropSivg"
41+ // CHECK-DAG: declare extern_weak {{.+}} @"$s25weak_import_native_helper1SV10storedPropSivs"
42+ // CHECK-DAG: declare extern_weak {{.+}} @"$s25weak_import_native_helper1SV10storedPropSivM"
4343 let x = s. storedProp
4444 s. storedProp = x
4545 s. storedProp += 1
4646
47- // CHECK-DAG-LABEL : declare extern_weak {{.+}} @"$s25weak_import_native_helper1SV12computedPropSivg"
48- // CHECK-DAG-LABEL : declare extern_weak {{.+}} @"$s25weak_import_native_helper1SV12computedPropSivs"
49- // CHECK-DAG-LABEL : declare extern_weak {{.+}} @"$s25weak_import_native_helper1SV12computedPropSivM"
47+ // CHECK-DAG: declare extern_weak {{.+}} @"$s25weak_import_native_helper1SV12computedPropSivg"
48+ // CHECK-DAG: declare extern_weak {{.+}} @"$s25weak_import_native_helper1SV12computedPropSivs"
49+ // CHECK-DAG: declare extern_weak {{.+}} @"$s25weak_import_native_helper1SV12computedPropSivM"
5050 let y = s. computedProp
5151 s. computedProp = y
5252 s. computedProp += 1
5353
54- // CHECK-DAG-LABEL : declare extern_weak {{.+}} @"$s25weak_import_native_helper1SVyS2icig"
55- // CHECK-DAG-LABEL : declare extern_weak {{.+}} @"$s25weak_import_native_helper1SVyS2icis"
56- // CHECK-DAG-LABEL : declare extern_weak {{.+}} @"$s25weak_import_native_helper1SVyS2iciM"
54+ // CHECK-DAG: declare extern_weak {{.+}} @"$s25weak_import_native_helper1SVyS2icig"
55+ // CHECK-DAG: declare extern_weak {{.+}} @"$s25weak_import_native_helper1SVyS2icis"
56+ // CHECK-DAG: declare extern_weak {{.+}} @"$s25weak_import_native_helper1SVyS2iciM"
5757 let z = s [ 0 ]
5858 s [ 0 ] = z
5959 s [ 0 ] += 1
6060
61- // CHECK-DAG-LABEL : declare extern_weak {{.+}} @"$s25weak_import_native_helper5WeakSV0A6MemberyyF"
61+ // CHECK-DAG: declare extern_weak {{.+}} @"$s25weak_import_native_helper5WeakSV0A6MemberyyF"
6262 let w = WeakS ( )
6363 w. weakMember ( )
6464}
6565
6666func testEnum( ) {
67- // CHECK-DAG-LABEL : @"$s25weak_import_native_helper1EO6strongyA2CmFWC" = external constant i32
67+ // CHECK-DAG: @"$s25weak_import_native_helper1EO6strongyA2CmFWC" = external constant i32
6868 _ = E . strong
6969
70- // CHECK-DAG-LABEL : @"$s25weak_import_native_helper1EO0A0yA2CmFWC" = extern_weak constant i32
70+ // CHECK-DAG: @"$s25weak_import_native_helper1EO0A0yA2CmFWC" = extern_weak constant i32
7171 _ = E . weak
7272
73- // CHECK-DAG-LABEL : @"$s25weak_import_native_helper1EO11strongAssocyACSicACmFWC" = external constant i32
73+ // CHECK-DAG: @"$s25weak_import_native_helper1EO11strongAssocyACSicACmFWC" = external constant i32
7474 _ = E . strongAssoc ( 0 )
7575
76- // CHECK-DAG-LABEL : @"$s25weak_import_native_helper1EO0A5AssocyACSicACmFWC" = extern_weak constant i32
76+ // CHECK-DAG: @"$s25weak_import_native_helper1EO0A5AssocyACSicACmFWC" = extern_weak constant i32
7777 _ = E . weakAssoc ( 0 )
7878}
7979
8080func testClass( ) {
81- // CHECK-DAG-LABEL : declare extern_weak {{.+}} @"$s25weak_import_native_helper1CCACycfC"
81+ // CHECK-DAG: declare extern_weak {{.+}} @"$s25weak_import_native_helper1CCACycfC"
8282 let c = C ( )
8383
84- // CHECK-DAG-LABEL : declare extern_weak {{.+}} @"$s25weak_import_native_helper1CC2fnyyFTj"
84+ // CHECK-DAG: declare extern_weak {{.+}} @"$s25weak_import_native_helper1CC2fnyyFTj"
8585 c. fn ( )
8686
87- // CHECK-DAG-LABEL : declare extern_weak swiftcc {{.+}} @"$s25weak_import_native_helper1CC10storedPropSivgTj"
88- // CHECK-DAG-LABEL : declare extern_weak swiftcc {{.+}} @"$s25weak_import_native_helper1CC10storedPropSivsTj"
89- // CHECK-DAG-LABEL : declare extern_weak swiftcc {{.+}} @"$s25weak_import_native_helper1CC10storedPropSivMTj"
87+ // CHECK-DAG: declare extern_weak swiftcc {{.+}} @"$s25weak_import_native_helper1CC10storedPropSivgTj"
88+ // CHECK-DAG: declare extern_weak swiftcc {{.+}} @"$s25weak_import_native_helper1CC10storedPropSivsTj"
89+ // CHECK-DAG: declare extern_weak swiftcc {{.+}} @"$s25weak_import_native_helper1CC10storedPropSivMTj"
9090 let x = c. storedProp
9191 c. storedProp = x
9292 c. storedProp += 1
9393
94- // CHECK-DAG-LABEL : declare extern_weak swiftcc {{.+}} @"$s25weak_import_native_helper1CC12computedPropSivgTj"
95- // CHECK-DAG-LABEL : declare extern_weak swiftcc {{.+}} @"$s25weak_import_native_helper1CC12computedPropSivsTj"
96- // CHECK-DAG-LABEL : declare extern_weak swiftcc {{.+}} @"$s25weak_import_native_helper1CC12computedPropSivMTj"
94+ // CHECK-DAG: declare extern_weak swiftcc {{.+}} @"$s25weak_import_native_helper1CC12computedPropSivgTj"
95+ // CHECK-DAG: declare extern_weak swiftcc {{.+}} @"$s25weak_import_native_helper1CC12computedPropSivsTj"
96+ // CHECK-DAG: declare extern_weak swiftcc {{.+}} @"$s25weak_import_native_helper1CC12computedPropSivMTj"
9797 let y = c. computedProp
9898 c. computedProp = y
9999 c. computedProp += 1
100100
101- // CHECK-DAG-LABEL : declare extern_weak swiftcc {{.+}} @"$s25weak_import_native_helper1CCyS2icigTj"
102- // CHECK-DAG-LABEL : declare extern_weak swiftcc {{.+}} @"$s25weak_import_native_helper1CCyS2icisTj"
103- // CHECK-DAG-LABEL : declare extern_weak swiftcc {{.+}} @"$s25weak_import_native_helper1CCyS2iciMTj"
101+ // CHECK-DAG: declare extern_weak swiftcc {{.+}} @"$s25weak_import_native_helper1CCyS2icigTj"
102+ // CHECK-DAG: declare extern_weak swiftcc {{.+}} @"$s25weak_import_native_helper1CCyS2icisTj"
103+ // CHECK-DAG: declare extern_weak swiftcc {{.+}} @"$s25weak_import_native_helper1CCyS2iciMTj"
104104 let z = c [ 0 ]
105105 c [ 0 ] = z
106106 c [ 0 ] += 1
107107}
108108
109+ // CHECK-DAG: @"$s25weak_import_native_helper1CCACycfCTq" = extern_weak global %swift.method_descriptor
109110class Sub : C {
110111 deinit {
111112 // This is correctly a strong symbol reference; the class is not declared
112113 // weak.
113- // CHECK-DAG-LABEL : declare swiftcc {{.+}} @"$s25weak_import_native_helper1CCfd"
114+ // CHECK-DAG: declare swiftcc {{.+}} @"$s25weak_import_native_helper1CCfd"
114115 }
115116}
116117
117118func testProtocolExistential( _ p: P ) {
118119 var mutP = p
119120
120- // CHECK-DAG-LABEL : declare extern_weak {{.+}} @"$s25weak_import_native_helper1PP2fnyyFTj"
121+ // CHECK-DAG: declare extern_weak {{.+}} @"$s25weak_import_native_helper1PP2fnyyFTj"
121122 p. fn ( )
122123
123- // CHECK-DAG-LABEL : declare extern_weak swiftcc {{.+}} @"$s25weak_import_native_helper1PP4propSivgTj"
124- // CHECK-DAG-LABEL : declare extern_weak swiftcc {{.+}} @"$s25weak_import_native_helper1PP4propSivsTj"
125- // CHECK-DAG-LABEL : declare extern_weak swiftcc {{.+}} @"$s25weak_import_native_helper1PP4propSivMTj"
124+ // CHECK-DAG: declare extern_weak swiftcc {{.+}} @"$s25weak_import_native_helper1PP4propSivgTj"
125+ // CHECK-DAG: declare extern_weak swiftcc {{.+}} @"$s25weak_import_native_helper1PP4propSivsTj"
126+ // CHECK-DAG: declare extern_weak swiftcc {{.+}} @"$s25weak_import_native_helper1PP4propSivMTj"
126127 let x = p. prop
127128 mutP. prop = x
128129 mutP. prop += 1
129130
130- // CHECK-DAG-LABEL : declare extern_weak swiftcc {{.+}} @"$s25weak_import_native_helper1PPyS2icigTj"
131- // CHECK-DAG-LABEL : declare extern_weak swiftcc {{.+}} @"$s25weak_import_native_helper1PPyS2icisTj"
132- // CHECK-DAG-LABEL : declare extern_weak swiftcc {{.+}} @"$s25weak_import_native_helper1PPyS2iciMTj"
131+ // CHECK-DAG: declare extern_weak swiftcc {{.+}} @"$s25weak_import_native_helper1PPyS2icigTj"
132+ // CHECK-DAG: declare extern_weak swiftcc {{.+}} @"$s25weak_import_native_helper1PPyS2icisTj"
133+ // CHECK-DAG: declare extern_weak swiftcc {{.+}} @"$s25weak_import_native_helper1PPyS2iciMTj"
133134 let z = p [ 0 ]
134135 mutP [ 0 ] = z
135136 mutP [ 0 ] += 1
136137}
137138
138139func testProtocolGeneric< Impl: P > ( _ type: Impl . Type ) {
139- // CHECK-DAG-LABEL : declare extern_weak {{.+}} @"$s25weak_import_native_helper1PPxycfCTj"
140+ // CHECK-DAG: declare extern_weak {{.+}} @"$s25weak_import_native_helper1PPxycfCTj"
140141 var mutP = type. init ( )
141142
142143 mutP. fn ( )
@@ -151,111 +152,32 @@ func testProtocolGeneric<Impl: P>(_ type: Impl.Type) {
151152}
152153
153154func testWeakTypes( ) -> [ Any . Type ] {
154- // CHECK-DAG-LABEL : declare extern_weak swiftcc %swift.metadata_response @"$s25weak_import_native_helper5WeakSVMa"
155- // CHECK-DAG-LABEL : declare extern_weak swiftcc %swift.metadata_response @"$s25weak_import_native_helper5WeakEOMa"
156- // CHECK-DAG-LABEL : declare extern_weak swiftcc %swift.metadata_response @"$s25weak_import_native_helper5WeakCCMa"
157- // CHECK-DAG-LABEL : @"$s25weak_import_native_helper5WeakPMp" = extern_weak global %swift.protocol
158- // CHECK-DAG-LABEL: declare extern_weak swiftcc %swift.metadata_response @"$s25weak_import_native_helper8GenericSVMa"
159- // CHECK-DAG-LABEL: declare extern_weak swiftcc %swift.metadata_response @"$s25weak_import_native_helper8GenericEOMa"
160- // CHECK-DAG-LABEL: declare extern_weak swiftcc %swift.metadata_response @"$s25weak_import_native_helper8GenericCCMa"
155+ // CHECK-DAG: declare extern_weak swiftcc %swift.metadata_response @"$s25weak_import_native_helper5WeakSVMa"
156+ // CHECK-DAG: declare extern_weak swiftcc %swift.metadata_response @"$s25weak_import_native_helper5WeakEOMa"
157+ // CHECK-DAG: declare extern_weak swiftcc %swift.metadata_response @"$s25weak_import_native_helper5WeakCCMa"
158+ // CHECK-DAG: @"$s25weak_import_native_helper5WeakPMp" = extern_weak global %swift.protocol
159+ // CHECK-DAG: @"$s25weak_import_native_helper8GenericSVMn" = extern_weak global %swift.type_descriptor
160+ // CHECK-DAG: @"$s25weak_import_native_helper8GenericEOMn" = extern_weak global %swift.type_descriptor
161+ // CHECK-DAG: @"$s25weak_import_native_helper8GenericCCMn" = extern_weak global %swift.type_descriptor
161162 return [ WeakS . self, WeakE . self, WeakC . self, WeakP . self, GenericS< Int> . self , GenericE< Int> . self , GenericC< Int> . self ]
162163}
163164
165+ // CHECK-DAG: @"$s25weak_import_native_helper5WeakCCMn" = extern_weak global %swift.type_descriptor
166+ // CHECK-DAG: @"$s25weak_import_native_helper5WeakCCACycfCTq" = extern_weak global %swift.method_descriptor
164167class WeakSub : WeakC {
165168 deinit {
166- // CHECK-DAG-LABEL : declare extern_weak swiftcc {{.+}} @"$s25weak_import_native_helper5WeakCCfd"
169+ // CHECK-DAG: declare extern_weak swiftcc {{.+}} @"$s25weak_import_native_helper5WeakCCfd"
167170 }
168171}
169172
173+ // CHECK-DAG: @"$s25weak_import_native_helper8GenericCCACyxGycfCTq" = extern_weak global %swift.method_descriptor
170174class WeakGenericSub : GenericC < Int > {
171175 deinit {
172- // CHECK-DAG-LABEL : declare extern_weak swiftcc {{.+}} @"$s25weak_import_native_helper8GenericCCfd"
176+ // CHECK-DAG: declare extern_weak swiftcc {{.+}} @"$s25weak_import_native_helper8GenericCCfd"
173177 }
174178}
175179
176180protocol RefinesP : BaseP { }
177181
178- // CHECK-DAG-LABEL : @"$s25weak_import_native_helper1SVAA5BasePAAWP" = extern_weak global i8*
182+ // CHECK-DAG: @"$s25weak_import_native_helper1SVAA5BasePAAWP" = extern_weak global i8*
179183extension S : RefinesP { }
180-
181- // We should not hoist the metadata accessor accross the version check.
182-
183- // CHECK-LABEL: define{{.*}} void @"$s18weak_import_native28test_not_hoist_weakly_linkedyyF"()
184- // CHECK-NOT: 15ResilientStructVMa
185- // CHECK: getVersion
186- // CHECK: br
187- // CHECK: 15ResilientStructVMa
188- // CHECK: ret
189-
190- public func test_not_hoist_weakly_linked( ) {
191- if getVersion ( ) == 1 {
192- var _ = ResilientStruct ( )
193- }
194- }
195-
196- // CHECK-LABEL: define{{.*}} void @"$s18weak_import_native29test_not_hoist_weakly_linked2yyF"()
197- // CHECK-NOT: 15ResilientStructVMa
198- // CHECK: getVersion
199- // CHECK: br
200- // CHECK: 15ResilientStructVMa
201- // CHECK: ret
202- public func test_not_hoist_weakly_linked2( ) {
203- if getVersion ( ) == 1 {
204- var _ = ( ResilientStruct ( ) , 1 )
205- }
206- }
207-
208- struct One < T> {
209- var elt : T ?
210- }
211-
212- // CHECK-LABEL: define{{.*}} void @"$s18weak_import_native29test_not_hoist_weakly_linked3yyF"()
213- // CHECK-NOT: 15ResilientStructVMa
214- // CHECK: getVersion
215- // CHECK: br
216- // CHECK: 15ResilientStructVMa
217- // CHECK: ret
218- public func test_not_hoist_weakly_linked3( ) {
219- if getVersion ( ) == 1 {
220- var _ = One ( elt: ResilientStruct ( ) )
221- }
222- }
223-
224- // CHECK-LABEL: define{{.*}} void @"$s18weak_import_native29test_not_hoist_weakly_linked4yyF"()
225- // CHECK-NOT: 15ResilientStructVMa
226- // CHECK: getVersion
227- // CHECK: br
228- // CHECK: 15ResilientStructVMa
229- // CHECK: ret
230- public func test_not_hoist_weakly_linked4( ) {
231- if getVersion ( ) == 1 {
232- var _ = One ( elt: ( ResilientStruct ( ) , 1 ) )
233- }
234- }
235-
236- // CHECK-LABEL: define{{.*}} @"$s18weak_import_native29test_weakly_linked_enum_cases1eSi0a1_b1_C7_helper1EO_t
237- // CHECK: [[TAG:%.*]] = call i32 %getEnumTag(
238- // CHECK: [[STRONG_CASE:%.*]] = load i32, i32* @"$s25weak_import_native_helper1EO6strongyA2CmFWC"
239- // CHECK: [[IS_STRONG:%.*]] = icmp eq i32 [[TAG]], [[STRONG_CASE]]
240- // CHECK: br i1 [[IS_STRONG]], label %[[BB0:[0-9]+]], label %[[BB1:[0-9]+]]
241- //
242- // CHECK: [[BB1]]:
243- // CHECK: br i1 icmp eq ({{.*}} ptrtoint (i32* @"$s25weak_import_native_helper1EO0A0yA2CmFWC" to {{.*}}), {{.*}} 0), label %[[BB2:[0-9]+]], label %[[BB3:[0-9]+]]
244- //
245- // CHECK: [[BB3]]:
246- // CHECK: [[WEAK_CASE:%.*]] = load i32, i32* @"$s25weak_import_native_helper1EO0A0yA2CmFWC"
247- // CHECK: [[IS_WEAK:%.*]] = icmp eq i32 [[TAG]], [[WEAK_CASE]]
248- // CHECK: br label %[[BB2]]
249- //
250- // CHECK: [[BB2]]:
251- // CHECK: = phi i1 [ false, %[[BB1]] ], [ [[IS_WEAK]], %[[BB3]] ]
252- public func test_weakly_linked_enum_cases( e: E ) -> Int {
253- switch e {
254- case . strong:
255- return 1
256- case . weak:
257- return 2
258- default :
259- return 3
260- }
261- }
0 commit comments