@@ -25,13 +25,13 @@ import Builtin
25
25
// -- field count
26
26
// CHECK-SAME: i32 1,
27
27
// -- field offset vector offset
28
- // CHECK-SAME: i32 2 ,
28
+ // CHECK-SAME: i32 3 ,
29
29
// -- field names
30
30
// CHECK-SAME: [3 x i8]* [[SINGLEDYNAMIC_FIELDS]]
31
31
// -- kind 1 (struct)
32
32
// CHECK-SAME: i32 1
33
33
// -- generic parameter vector offset
34
- // CHECK-SAME: i32 3 ,
34
+ // CHECK-SAME: i32 2 ,
35
35
// -- generic parameter count, primary count
36
36
// CHECK-SAME: i32 1, i32 1
37
37
// -- nesting depth
@@ -50,7 +50,7 @@ import Builtin
50
50
// -- address point
51
51
// CHECK-SAME: i64 1, {{.*}}* @"$S15generic_structs13SingleDynamicVMn"
52
52
// -- field offset vector; generic parameter vector
53
- // CHECK-SAME: i64 0, %swift.type* null }>
53
+ // CHECK-SAME: %swift.type* null, i64 0 }>
54
54
55
55
// -- Nominal type descriptor for generic struct with protocol requirements
56
56
// FIXME: Strings should be unnamed_addr. rdar://problem/22674524
@@ -62,13 +62,13 @@ import Builtin
62
62
// -- field count
63
63
// CHECK-SAME: i32 2,
64
64
// -- field offset vector offset
65
- // CHECK-SAME: i32 2 ,
65
+ // CHECK-SAME: i32 6 ,
66
66
// -- field names
67
67
// CHECK-SAME: [5 x i8]* [[DYNAMICWITHREQUIREMENTS_FIELDS]]
68
68
// -- kind 1 (struct)
69
69
// CHECK-SAME: i32 1,
70
70
// -- generic parameter vector offset
71
- // CHECK-SAME: i32 4 ,
71
+ // CHECK-SAME: i32 2 ,
72
72
// -- generic requirements count; generic arguments count
73
73
// CHECK-SAME: i32 4, i32 2
74
74
// -- nesting depth
@@ -81,7 +81,7 @@ import Builtin
81
81
82
82
// CHECK: @"$S15generic_structs23DynamicWithRequirementsVMP" = internal global <{ {{.*}} }> <{
83
83
// -- field offset vector; generic parameter vector
84
- // CHECK: i64 0, i64 0, %swift.type* null, %swift.type* null, i8** null, i8** null }>
84
+ // CHECK: %swift.type* null, %swift.type* null, i8** null, i8** null, i64 0, i64 0 }>
85
85
86
86
// -- Fixed-layout struct metadata contains fixed field offsets
87
87
// CHECK: @"$S15generic_structs6IntishVMf" = internal constant <{ {{.*}} i64 }> <{
@@ -144,7 +144,7 @@ entry(%0 : $*ComplexDynamic<A, B>, %1 : $*Byteful, %2 : $*A, %3 : $*B, %4 : $*Ch
144
144
%a = struct_element_addr %0 : $*ComplexDynamic<A, B>, #ComplexDynamic.a2
145
145
146
146
// CHECK: [[METADATA:%.*]] = bitcast %swift.type* {{%.*}} to i64*
147
- // CHECK: [[FIELD_OFFSET_VECTOR:%.*]] = getelementptr inbounds i64, i64* [[METADATA]], i64 2
147
+ // CHECK: [[FIELD_OFFSET_VECTOR:%.*]] = getelementptr inbounds i64, i64* [[METADATA]], i64 4
148
148
// CHECK: [[FIELD_OFFSET_ADDR:%.*]] = getelementptr inbounds i64, i64* [[FIELD_OFFSET_VECTOR]], i32 2
149
149
// CHECK: [[FIELD_OFFSET:%.*]] = load i64, i64* [[FIELD_OFFSET_ADDR]], align 8
150
150
// CHECK: [[BYTES:%.*]] = bitcast %T15generic_structs14ComplexDynamicV* %0 to i8*
@@ -153,7 +153,7 @@ entry(%0 : $*ComplexDynamic<A, B>, %1 : $*Byteful, %2 : $*A, %3 : $*B, %4 : $*Ch
153
153
%b = struct_element_addr %0 : $*ComplexDynamic<A, B>, #ComplexDynamic.b
154
154
155
155
// CHECK: [[METADATA:%.*]] = bitcast %swift.type* {{%.*}} to i64*
156
- // CHECK: [[FIELD_OFFSET_VECTOR:%.*]] = getelementptr inbounds i64, i64* [[METADATA]], i64 2
156
+ // CHECK: [[FIELD_OFFSET_VECTOR:%.*]] = getelementptr inbounds i64, i64* [[METADATA]], i64 4
157
157
// CHECK: [[FIELD_OFFSET_ADDR:%.*]] = getelementptr inbounds i64, i64* [[FIELD_OFFSET_VECTOR]], i32 3
158
158
// CHECK: [[FIELD_OFFSET:%.*]] = load i64, i64* [[FIELD_OFFSET_ADDR]], align 8
159
159
// CHECK: [[BYTES:%.*]] = bitcast %T15generic_structs14ComplexDynamicV* %0 to i8*
@@ -163,7 +163,7 @@ entry(%0 : $*ComplexDynamic<A, B>, %1 : $*Byteful, %2 : $*A, %3 : $*B, %4 : $*Ch
163
163
%c = struct_element_addr %5 : $*SingleDynamic<B>, #SingleDynamic.x
164
164
165
165
// CHECK: [[METADATA:%.*]] = bitcast %swift.type* {{%.*}} to i64*
166
- // CHECK: [[FIELD_OFFSET_VECTOR:%.*]] = getelementptr inbounds i64, i64* [[METADATA]], i64 2
166
+ // CHECK: [[FIELD_OFFSET_VECTOR:%.*]] = getelementptr inbounds i64, i64* [[METADATA]], i64 4
167
167
// CHECK: [[FIELD_OFFSET_ADDR:%.*]] = getelementptr inbounds i64, i64* [[FIELD_OFFSET_VECTOR]], i32 4
168
168
// CHECK: [[FIELD_OFFSET:%.*]] = load i64, i64* [[FIELD_OFFSET_ADDR]], align 8
169
169
// CHECK: [[BYTES:%.*]] = bitcast %T15generic_structs14ComplexDynamicV* %0 to i8*
@@ -214,12 +214,12 @@ entry(%0 : $*ComplexDynamic<A, B>, %1 : $*Byteful, %2 : $*A, %3 : $*B, %4 : $*Ch
214
214
// CHECK: [[METADATA:%.*]] = call %swift.type* @swift_allocateGenericValueMetadata(%swift.type_pattern* %0, i8** %1)
215
215
// CHECK: [[SELF_ARRAY:%.*]] = bitcast %swift.type* [[METADATA]] to i8**
216
216
// Fill type argument.
217
- // CHECK: [[T1:%.*]] = getelementptr inbounds i8*, i8** [[SELF_ARRAY]], i64 3
217
+ // CHECK: [[T1:%.*]] = getelementptr inbounds i8*, i8** [[SELF_ARRAY]], i64 2
218
218
// CHECK: [[T0:%.*]] = bitcast %swift.type* %T to i8*
219
219
// CHECK: store i8* [[T0]], i8** [[T1]], align 8
220
220
// Lay out fields.
221
221
// CHECK: [[T0:%.*]] = bitcast %swift.type* [[METADATA]] to i64*
222
- // CHECK: [[T1:%.*]] = getelementptr inbounds i64, i64* [[T0]], i64 2
222
+ // CHECK: [[T1:%.*]] = getelementptr inbounds i64, i64* [[T0]], i64 3
223
223
// CHECK: [[T2:%.*]] = getelementptr inbounds i8**, i8*** [[TYPES:%.*]], i32 0
224
224
// CHECK: call void @swift_initStructMetadata(%swift.type* [[METADATA]], i64 0, i64 1, i8*** [[TYPES]], i64* [[T1]])
225
225
// CHECK: ret %swift.type* [[METADATA]]
0 commit comments