@@ -157,34 +157,29 @@ struct ComplexDynamic<U, V> {
157
157
// CHECK-LABEL: define{{( dllexport)?}}{{( protected)?}} swiftcc void @explode_complex_dynamic
158
158
sil @explode_complex_dynamic : $<A, B> (@in ComplexDynamic<A, B>, @inout Byteful, @inout A, @inout B, @inout Chareth) -> () {
159
159
entry(%0 : $*ComplexDynamic<A, B>, %1 : $*Byteful, %2 : $*A, %3 : $*B, %4 : $*Chareth):
160
- %a = struct_element_addr %0 : $*ComplexDynamic<A, B>, #ComplexDynamic.a2
160
+ // CHECK: [[A:%.*]] = getelementptr inbounds %T15generic_structs14ComplexDynamicV, %T15generic_structs14ComplexDynamicV* %0
161
+ // CHECK: [[PTR1:%.*]] = bitcast %T15generic_structs14ComplexDynamicV* %0
162
+ // CHECK-NEXT: [[EL:%.*]] = getelementptr inbounds i8, i8* [[PTR1]]
163
+ // CHECK-NEXT: [[B:%.*]] = bitcast i8* [[EL]] to %swift.opaque*
161
164
162
- // CHECK: [[METADATA:%.*]] = bitcast %swift.type* {{%.*}} to i32*
163
- // CHECK: [[FIELD_OFFSET_VECTOR:%.*]] = getelementptr inbounds i32, i32* [[METADATA]], i64 8
164
- // CHECK: [[FIELD_OFFSET_ADDR:%.*]] = getelementptr inbounds i32, i32* [[FIELD_OFFSET_VECTOR]], i32 2
165
- // CHECK: [[FIELD_OFFSET:%.*]] = load i32, i32* [[FIELD_OFFSET_ADDR]], align 8
166
- // CHECK: [[BYTES:%.*]] = bitcast %T15generic_structs14ComplexDynamicV* %0 to i8*
167
- // CHECK: [[BYTE_OFFSET:%.*]] = getelementptr inbounds i8, i8* [[BYTES]], i32 [[FIELD_OFFSET]]
168
- // CHECK: bitcast i8* [[BYTE_OFFSET]] to %swift.opaque*
165
+ %a = struct_element_addr %0 : $*ComplexDynamic<A, B>, #ComplexDynamic.a2
169
166
%b = struct_element_addr %0 : $*ComplexDynamic<A, B>, #ComplexDynamic.b
170
-
171
- // CHECK: [[METADATA:%.*]] = bitcast %swift.type* {{%.*}} to i32*
172
- // CHECK: [[FIELD_OFFSET_VECTOR:%.*]] = getelementptr inbounds i32, i32* [[METADATA]], i64 8
173
- // CHECK: [[FIELD_OFFSET_ADDR:%.*]] = getelementptr inbounds i32, i32* [[FIELD_OFFSET_VECTOR]], i32 3
174
- // CHECK: [[FIELD_OFFSET:%.*]] = load i32, i32* [[FIELD_OFFSET_ADDR]], align 8
175
- // CHECK: [[BYTES:%.*]] = bitcast %T15generic_structs14ComplexDynamicV* %0 to i8*
176
- // CHECK: [[BYTE_OFFSET:%.*]] = getelementptr inbounds i8, i8* [[BYTES]], i32 [[FIELD_OFFSET]]
177
- // CHECK: bitcast i8* [[BYTE_OFFSET]] to %T15generic_structs13SingleDynamicV
167
+
168
+ // CHECK: [[PTR2:%.*]] = bitcast %T15generic_structs14ComplexDynamicV* %0
169
+ // CHECK-NEXT: [[C_PTR:%.*]] = getelementptr inbounds i8, i8* [[PTR2]], i64 35
170
+ // CHECK-NEXT: [[C:%.*]] = bitcast i8* [[C_PTR]] to %T15generic_structs13SingleDynamicV*
171
+ // CHECK-NEXT: [[C_X:%.*]] = bitcast %T15generic_structs13SingleDynamicV* [[C]] to %swift.opaque*
172
+
173
+ // CHECK: [[PTR3:%.*]] = bitcast %T15generic_structs14ComplexDynamicV* %0
174
+ // CHECK-NEXT: [[D_PTR:%.*]] = getelementptr inbounds i8, i8* [[PTR3]], i64 36
175
+ // CHECK-NEXT: [[D:%.*]] = bitcast i8* [[D_PTR]] to %T15generic_structs7CharethV*
176
+
177
+ // CHECK: call %T15generic_structs7BytefulV* @"$s15generic_structs7BytefulVWOf"(%T15generic_structs7BytefulV* [[A]], %T15generic_structs7BytefulV* %1)
178
+ // CHECK: call %swift.opaque* %assignWithCopy(%swift.opaque* %2, %swift.opaque* [[B]], %swift.type* %A)
179
+ // CHECK: call %swift.opaque* %assignWithCopy3(%swift.opaque* %3, %swift.opaque* [[C_X]], %swift.type* %B)
180
+ // CHECK: call %T15generic_structs7CharethV* @"$s15generic_structs7CharethVWOf"(%T15generic_structs7CharethV* [[D]], %T15generic_structs7CharethV* %4)
178
181
%5 = struct_element_addr %0 : $*ComplexDynamic<A, B>, #ComplexDynamic.c
179
182
%c = struct_element_addr %5 : $*SingleDynamic<B>, #SingleDynamic.x
180
-
181
- // CHECK: [[METADATA:%.*]] = bitcast %swift.type* {{%.*}} to i32*
182
- // CHECK: [[FIELD_OFFSET_VECTOR:%.*]] = getelementptr inbounds i32, i32* [[METADATA]], i64 8
183
- // CHECK: [[FIELD_OFFSET_ADDR:%.*]] = getelementptr inbounds i32, i32* [[FIELD_OFFSET_VECTOR]], i32 4
184
- // CHECK: [[FIELD_OFFSET:%.*]] = load i32, i32* [[FIELD_OFFSET_ADDR]], align 8
185
- // CHECK: [[BYTES:%.*]] = bitcast %T15generic_structs14ComplexDynamicV* %0 to i8*
186
- // CHECK: [[BYTE_OFFSET:%.*]] = getelementptr inbounds i8, i8* [[BYTES]], i32 [[FIELD_OFFSET]]
187
- // CHECK: bitcast i8* [[BYTE_OFFSET]] to %T15generic_structs7CharethV
188
183
%d = struct_element_addr %0 : $*ComplexDynamic<A, B>, #ComplexDynamic.d
189
184
copy_addr %a to %1 : $*Byteful
190
185
copy_addr %b to %2 : $*A
0 commit comments