@@ -32,12 +32,10 @@ struct Gen2<Fwd : Q> : Q {}
3232// CHECK: [[METADATA_ELEMENT_0:%[^,]+]] = getelementptr inbounds [1 x %swift.type*], [1 x %swift.type*]* [[METADATA_PACK]]
3333// CHECK: store %swift.type* bitcast {{.*}}$s26variadic_generic_functions3S_2VMf{{.*}}, %swift.type** [[METADATA_ELEMENT_0]]
3434// CHECK: [[METADATA_PACK_PTR:%[^,]+]] = bitcast [1 x %swift.type*]* [[METADATA_PACK]] to %swift.type**
35- // CHECK: [[HEAPIFIED_METADATA_PACK_PTR:%[^,]+]] = call swiftcc %swift.type** @swift_allocateMetadataPack(%swift.type** [[METADATA_PACK_PTR]], i64 1)
3635// CHECK: [[WTABLE_ELEMENT_0:%[^,]+]] = getelementptr inbounds [1 x i8**], [1 x i8**]* [[WTABLE_PACK]]
3736// CHECK: store i8** getelementptr inbounds {{.*}}$s26variadic_generic_functions3S_2VAA1PAAWP{{.*}}, i8*** [[WTABLE_ELEMENT_0]]
3837// CHECK: [[WTABLE_PACK_PTR:%[^,]+]] = bitcast [1 x i8**]* [[WTABLE_PACK]] to i8***
39- // CHECK: [[HEAPIFIED_WTABLE_PACK_PTR:%[^%]+]] = call swiftcc i8*** @swift_allocateWitnessTablePack(i8*** [[WTABLE_PACK_PTR]], i64 1)
40- // CHECK: call swiftcc void @g([[INT]] 1, %swift.type** [[HEAPIFIED_METADATA_PACK_PTR]], i8*** [[HEAPIFIED_WTABLE_PACK_PTR]])
38+ // CHECK: call swiftcc void @g([[INT]] 1, %swift.type** [[METADATA_PACK_PTR]], i8*** [[WTABLE_PACK_PTR]])
4139sil @c : $() -> () {
4240 %g = function_ref @g : $@convention(thin) <each T : P> () -> ()
4341 apply %g<Pack{S_2}>() : $@convention(thin) <each T : P> () -> ()
@@ -91,10 +89,9 @@ sil @f1c : $<each T : PA where repeat each T.A : P> () -> () {}
9189// CHECK-SAME: i8*** %"each T.PA",
9290// CHECK-SAME: i8*** [[ASSOCIATEDTYPES_CONFORMANCES_TO_Q:%[^,]+]])
9391// CHECK: [[ASSOCIATEDTYPES:%[^,]+]] = alloca %swift.type*, [[INT]] [[SHAPE]]
94- // CHECK: [[HEAPIFIED_ASSOCIATEDTYPES:%[^,]+]] = call swiftcc %swift.type** @swift_allocateMetadataPack(%swift.type** [[ASSOCIATEDTYPES]], i64 %0)
9592// CHECK: call swiftcc void @associatedtype_with_added_conformance_callee(
9693// CHECK-SAME: [[INT]] [[SHAPE]],
97- // CHECK-SAME: %swift.type** [[HEAPIFIED_ASSOCIATEDTYPES ]],
94+ // CHECK-SAME: %swift.type** [[ASSOCIATEDTYPES ]],
9895// CHECK-SAME: i8*** [[ASSOCIATEDTYPES_CONFORMANCES_TO_Q]])
9996sil @associatedtype_with_added_conformance : $<each T : PA where repeat each T.A : Q> () -> () {
10097 %callee = function_ref @associatedtype_with_added_conformance_callee : $@convention(thin) <each T : Q> () -> ()
@@ -112,10 +109,9 @@ sil @associatedtype_with_added_conformance_callee : $<each T : Q> () -> () {}
112109// CHECK-SAME: i8*** %"each T.A.QA",
113110// CHECK-SAME: i8*** [[ASSOCIATEDTYPES_CONFORMANCES_TO_Q:%[^,]+]])
114111// CHECK: [[ASSOCIATEDTYPES:%[^,]+]] = alloca %swift.type*, [[INT]] [[SHAPE]]
115- // CHECK: [[HEAPIFIED_ASSOCIATEDTYPES:%[^,]+]] = call swiftcc %swift.type** @swift_allocateMetadataPack(%swift.type** [[ASSOCIATEDTYPES]], i64 [[SHAPE]])
116112// CHECK: call swiftcc void @associatedtype_with_added_conformance_2_callee(
117113// CHECK-SAME: [[INT]] [[SHAPE]],
118- // CHECK-SAME: %swift.type** [[HEAPIFIED_ASSOCIATEDTYPES ]],
114+ // CHECK-SAME: %swift.type** [[ASSOCIATEDTYPES ]],
119115// CHECK-SAME: i8*** [[ASSOCIATEDTYPES_CONFORMANCES_TO_Q]])
120116sil @associatedtype_with_added_conformance_2 : $<each T : PA where repeat each T.A : QA, repeat each T.A.A : R> () -> () {
121117 %j = function_ref @associatedtype_with_added_conformance_2_callee : $@convention(thin) <each T : R> () -> ()
@@ -131,15 +127,13 @@ sil @associatedtype_with_added_conformance_2_callee : $<each T : R> () -> () {}
131127// CHECK-SAME: %swift.type** %"each T",
132128// CHECK-SAME: i8*** %"each T.Q")
133129// CHECK: [[GEN2_TYPES:%[^,]+]] = alloca %swift.type*, [[INT]] [[SHAPE]]
134- // CHECK: [[HEAPIFIED_GEN2_TYPES:%[^,]+]] = call swiftcc %swift.type** @swift_allocateMetadataPack(%swift.type** [[GEN2_TYPES]], i64 [[SHAPE]])
135130// CHECK: [[STORED_STACK_LOC:%[^,]+]] = call i8* @llvm.stacksave()
136131// CHECK: [[GEN2_CONFORMANCES_TO_Q:%[^,]+]] = alloca i8**, [[INT]] [[SHAPE]]
137- // CHECK: [[HEAPIFIED_GEN2_CONFORMANCES_TO_Q:%[^%]+]] = call swiftcc i8*** @swift_allocateWitnessTablePack(i8*** [[GEN2_CONFORMANCES_TO_Q]], i64 [[SHAPE]])
138- // CHECK: call void @llvm.stackrestore(i8* [[STORED_STACK_LOC]])
139132// CHECK: call swiftcc void @associatedtype_with_forwarded_conformance_1_callee(
140133// CHECK-SAME: [[INT]] [[SHAPE]],
141- // CHECK-SAME: %swift.type** [[HEAPIFIED_GEN2_TYPES]],
142- // CHECK-SAME: i8*** [[HEAPIFIED_GEN2_CONFORMANCES_TO_Q]])
134+ // CHECK-SAME: %swift.type** [[GEN2_TYPES]],
135+ // CHECK-SAME: i8*** [[GEN2_CONFORMANCES_TO_Q]])
136+ // CHECK: call void @llvm.stackrestore(i8* [[STORED_STACK_LOC]])
143137sil @associatedtype_with_forwarded_conformance_1 : $<each T : Q> () -> () {
144138 %i = function_ref @associatedtype_with_forwarded_conformance_1_callee : $@convention(thin) <each T : Q> () -> ()
145139 apply %i<Pack{repeat Gen2<each T>}>() : $@convention(thin) <each T : Q> () -> ()
@@ -156,16 +150,14 @@ sil @associatedtype_with_forwarded_conformance_1_callee : $<each T : Q> () -> ()
156150// CHECK-SAME: i8*** %"each T.PA",
157151// CHECK-SAME: i8*** %"each T.A.Q")
158152// CHECK: [[GEN1_TYPES:%[^,]+]] = alloca %swift.type*, [[INT]] [[SHAPE]]
159- // CHECK: [[HEAPIFIED_GEN1_TYPES:%[^,]+]] = call swiftcc %swift.type** @swift_allocateMetadataPack(%swift.type** [[GEN1_TYPES]], i64 [[SHAPE]])
160153// CHECK: [[STORED_STACK_LOC:%[^,]+]] = call i8* @llvm.stacksave()
161154// CHECK: [[GEN1_CONFORMANCES_TO_PA:%[^,]+]] = alloca i8**, [[INT]] [[SHAPE]]
162- // CHECK: [[HEAPIFIED_GEN1_CONFORMANCES_TO_PA:%[^%]+]] = call swiftcc i8*** @swift_allocateWitnessTablePack(i8*** [[GEN1_CONFORMANCES_TO_PA]], i64 [[SHAPE]])
163- // CHECK: call void @llvm.stackrestore(i8* [[STORED_STACK_LOC]])
164155// CHECK: call swiftcc void @generictype_with_forwarded_conformance_2_callee(
165156// CHECK-SAME: [[INT]] [[SHAPE]],
166- // CHECK-SAME: %swift.type** [[HEAPIFIED_GEN1_TYPES ]],
167- // CHECK-SAME: i8*** [[HEAPIFIED_GEN1_CONFORMANCES_TO_PA ]],
157+ // CHECK-SAME: %swift.type** [[GEN1_TYPES ]],
158+ // CHECK-SAME: i8*** [[GEN1_CONFORMANCES_TO_PA ]],
168159// CHECK-SAME: i8*** %"each T.A.Q")
160+ // CHECK: call void @llvm.stackrestore(i8* [[STORED_STACK_LOC]])
169161sil @generictype_with_forwarded_conformance_2 : $<each T : PA where repeat each T.A : Q>() -> () {
170162 %callee = function_ref @generictype_with_forwarded_conformance_2_callee : $@convention(thin) <each T : PA where repeat each T.A : Q> () -> ()
171163 apply %callee<Pack{repeat Gen1<each T>}>() : $@convention(thin) <each T : PA where repeat each T.A : Q> () -> ()
@@ -181,16 +173,14 @@ sil @generictype_with_forwarded_conformance_2_callee : $<each T : PA where repea
181173// CHECK-SAME: i8*** %"each T.PA",
182174// CHECK-SAME: i8*** %"each T.A.Q")
183175// CHECK: [[GEN1_GEN1_TYPES:%[^,]+]] = alloca %swift.type*, [[INT]] [[SHAPE]]
184- // CHECK: [[HEAPIFIED_GEN1_GEN1_TYPES:%[^%]+]] = call swiftcc %swift.type** @swift_allocateMetadataPack(%swift.type** [[GEN1_GEN1_TYPES]], i64 [[SHAPE]])
185176// CHECK: [[STORED_STACK_LOC:%[^,]+]] = call i8* @llvm.stacksave()
186177// CHECK: [[GEN1_GEN1_CONFORMANCES_TO_PA:%[^,]+]] = alloca i8**, [[INT]] [[SHAPE]]
187- // CHECK: [[HEAPIFIED_GEN1_GEN1_CONFORMANCES_TO_PA:%[^%]+]] = call swiftcc i8*** @swift_allocateWitnessTablePack(i8*** [[GEN1_GEN1_CONFORMANCES_TO_PA]], i64 [[SHAPE]])
188- // CHECK: call void @llvm.stackrestore(i8* [[STORED_STACK_LOC]])
189178// CHECK: call swiftcc void @generic_with_forwarded_conformance_3_callee(
190179// CHECK-SAME: [[INT]] [[SHAPE]],
191- // CHECK-SAME: %swift.type** [[HEAPIFIED_GEN1_GEN1_TYPES ]],
192- // CHECK-SAME: i8*** [[HEAPIFIED_GEN1_GEN1_CONFORMANCES_TO_PA ]],
180+ // CHECK-SAME: %swift.type** [[GEN1_GEN1_TYPES ]],
181+ // CHECK-SAME: i8*** [[GEN1_GEN1_CONFORMANCES_TO_PA ]],
193182// CHECK-SAME: i8*** %"each T.A.Q")
183+ // CHECK: call void @llvm.stackrestore(i8* [[STORED_STACK_LOC]])
194184sil @generic_with_forwarded_conformance_3 : $<each T : PA where repeat each T.A : Q> () -> () {
195185 %callee = function_ref @generic_with_forwarded_conformance_3_callee : $@convention(thin) <each T : PA where repeat each T.A : Q> () -> ()
196186 apply %callee<Pack{repeat Gen1<Gen1<each T>>}>() : $@convention(thin) <each T : PA where repeat each T.A : Q> () -> ()
0 commit comments