1
- // RUN: %swift %use_no_opaque_pointers -prespecialize-generic-metadata -target %module-target-future -emit-ir %s | %FileCheck %s -DINT=i%target-ptrsize -DALIGNMENT=%target-alignment --check-prefix=CHECK --check-prefix=CHECK-%target-vendor
2
- // RUN: %swift -prespecialize-generic-metadata -target %module-target-future -emit-ir %s
1
+ // RUN: %swift -prespecialize-generic-metadata -target %module-target-future -emit-ir %s | %FileCheck %s -DINT=i%target-ptrsize -DALIGNMENT=%target-alignment --check-prefix=CHECK --check-prefix=CHECK-%target-vendor
3
2
4
3
// REQUIRES: VENDOR=apple || OS=linux-gnu
5
4
// UNSUPPORTED: CPU=i386 && OS=ios
10
9
// CHECK-apple-SAME: global
11
10
// CHECK-unknown-SAME: constant
12
11
// CHECK-SAME: <{
13
- // CHECK-SAME: void (%T4main5Value[[UNIQUE_ID_1]]LLC*)* ,
14
- // CHECK-SAME: i8** ,
12
+ // CHECK-SAME: ptr ,
13
+ // CHECK-SAME: ptr ,
15
14
// : [[INT]],
16
- // CHECK-apple-SAME: %objc_class* ,
17
- // CHECK-unknown-SAME: %swift.type* ,
18
- // CHECK-apple-SAME: %swift.opaque* ,
19
- // CHECK-apple-SAME: %swift.opaque* ,
15
+ // CHECK-apple-SAME: ptr ,
16
+ // CHECK-unknown-SAME: ptr ,
17
+ // CHECK-apple-SAME: ptr ,
18
+ // CHECK-apple-SAME: ptr ,
20
19
// CHECK-apple-SAME: [[INT]],
21
20
// CHECK-SAME: i32,
22
21
// CHECK-SAME: i32,
25
24
// CHECK-SAME: i16,
26
25
// CHECK-SAME: i32,
27
26
// CHECK-SAME: i32,
28
- // CHECK-SAME: %swift.type_descriptor* ,
29
- // CHECK-SAME: i8* ,
30
- // CHECK-SAME: %swift.type* ,
31
- // CHECK-unknown-SAME: %swift.type* ,
27
+ // CHECK-SAME: ptr ,
28
+ // CHECK-SAME: ptr ,
29
+ // CHECK-SAME: ptr ,
30
+ // CHECK-unknown-SAME: ptr ,
32
31
// CHECK-SAME: [[INT]],
33
32
// CHECK-unknown-SAME: [[INT]],
34
- // CHECK-apple-SAME: %T4main5Value[[UNIQUE_ID_1]]LLC* (
35
- // CHECK-apple-SAME: %swift.opaque*,
36
- // CHECK-apple-SAME: %swift.opaque*,
37
- // CHECK-apple-SAME: %swift.type*
38
- // CHECK-SAME: )*
33
+ // CHECK-apple-SAME: ptr
39
34
// CHECK-SAME: }> <{
40
- // CHECK-SAME: void (%T4main5Value[[UNIQUE_ID_1]]LLC*)*
35
+ // CHECK-SAME: ptr
41
36
// CHECK-SAME: $s4main5Value[[UNIQUE_ID_1]]LLCfD
42
37
// CHECK-SAME: $sBoWV
43
38
// CHECK-apple-SAME: $s4main5Value[[UNIQUE_ID_1]]LLCyAA9Argument1ACLLCySiGAA9Argument2ACLLCySSGGMM
44
39
// CHECK-apple-SAME: OBJC_CLASS_$__TtCs12_SwiftObject
45
- // CHECK-apple-SAME: %swift.opaque* @ _objc_empty_cache,
46
- // CHECK-apple-SAME: %swift.opaque* null,
40
+ // CHECK-apple-SAME: _objc_empty_cache
41
+ // CHECK-apple-SAME: ptr null,
47
42
// CHECK-apple-SAME: [[INT]] add (
48
- // CHECK-apple-SAME: [[INT]] ptrtoint (
49
- // CHECK-apple-SAME: {
50
- // CHECK-apple-SAME: i32,
51
- // CHECK-apple-SAME: i32,
52
- // CHECK-apple-SAME: i32,
53
- // : i32,
54
- // CHECK-apple-SAME: i8*,
55
- // CHECK-apple-SAME: i8*,
56
- // CHECK-apple-SAME: i8*,
57
- // CHECK-apple-SAME: i8*,
58
- // CHECK-apple-SAME: {
59
- // CHECK-apple-SAME: i32,
60
- // CHECK-apple-SAME: i32,
61
- // CHECK-apple-SAME: [
62
- // CHECK-apple-SAME: 2 x {
63
- // CHECK-apple-SAME: [[INT]]*,
64
- // CHECK-apple-SAME: i8*,
65
- // CHECK-apple-SAME: i8*,
66
- // CHECK-apple-SAME: i32,
67
- // CHECK-apple-SAME: i32
68
- // CHECK-apple-SAME: }
69
- // CHECK-apple-SAME: ]
70
- // CHECK-apple-SAME: }*,
71
- // CHECK-apple-SAME: i8*,
72
- // CHECK-apple-SAME: i8*
73
- // CHECK-apple-SAME: }* @"_DATA_$s4main5Value[[UNIQUE_ID_1]]LLCyAA9Argument1ACLLCySiGAA9Argument2ACLLCySSGGMf" to [[INT]]
74
- // CHECK-apple-SAME: ),
43
+ // CHECK-apple-SAME: ptr {{[^@]*}}@"_DATA_$s4main5Value[[UNIQUE_ID_1]]LLCyAA9Argument1ACLLCySiGAA9Argument2ACLLCySSGGMf"{{[^,]*}} to [[INT]]
75
44
// CHECK-apple-SAME: [[INT]] 2
76
45
// CHECK-apple-SAME: ),
77
46
// CHECK-unknown-SAME: [[INT]] 0,
78
- // CHECK-unknown-SAME: %swift.type* null,
47
+ // CHECK-unknown-SAME: ptr null,
79
48
// CHECK-SAME: i32 26,
80
49
// CHECK-SAME: i32 0,
81
50
// CHECK-SAME: i32 {{(32|16)}},
84
53
// CHECK-apple-SAME: i32 {{(144|84)}},
85
54
// CHECK-unknown-SAME: i32 120,
86
55
// CHECK-SAME: i32 {{(24|12)}},
87
- // : %swift.type_descriptor* bitcast (
88
- // : <{
89
- // : i32,
90
- // : i32,
91
- // : i32,
92
- // : i32,
93
- // : i32,
94
- // : i32,
95
- // : i32,
96
- // : i32,
97
- // : i32,
98
- // : i32,
99
- // : i32,
100
- // : i32,
101
- // : i32,
102
- // : i16,
103
- // : i16,
104
- // : i16,
105
- // : i16,
106
- // : i8,
107
- // : i8,
108
- // : i8,
109
- // : i8,
110
- // : i32,
111
- // : i32,
112
- // : %swift.method_descriptor
113
- // CHECK-SAME: $s4main5Value[[UNIQUE_ID_1]]LLCMn
114
- // : ),
115
- // CHECK-SAME: i8* null,
116
- // CHECK-SAME: %swift.type* getelementptr inbounds (
56
+ // CHECK-SAME: $s4main5Value[[UNIQUE_ID_1]]LLCMn
57
+ // CHECK-SAME: ptr null,
58
+ // CHECK-SAME: ptr getelementptr inbounds (
117
59
// CHECK-SAME: %swift.full_heapmetadata,
118
- // CHECK-SAME: %swift.full_heapmetadata* bitcast (
119
- // CHECK-SAME: <{
120
- // CHECK-SAME: void (
121
- // CHECK-SAME: %T4main9Argument1[[UNIQUE_ID_1]]LLC*
122
- // CHECK-SAME: )*,
123
- // CHECK-SAME: i8**,
124
- // : [[INT]],
125
- // CHECK-apple-SAME: %objc_class*,
126
- // CHECK-unknown-SAME: %swift.type*,
127
- // CHECK-apple-SAME: %swift.opaque*,
128
- // CHECK-apple-SAME: %swift.opaque*,
129
- // CHECK-apple-SAME: [[INT]],
130
- // CHECK-SAME: i32,
131
- // CHECK-SAME: i32,
132
- // CHECK-SAME: i32,
133
- // CHECK-SAME: i16,
134
- // CHECK-SAME: i16,
135
- // CHECK-SAME: i32,
136
- // CHECK-SAME: i32,
137
- // CHECK-SAME: %swift.type_descriptor*,
138
- // CHECK-SAME: i8*,
139
- // CHECK-SAME: %swift.type*,
140
- // CHECK-SAME: [[INT]],
141
- // CHECK-SAME: %T4main9Argument1[[UNIQUE_ID_1]]LLC* (
142
- // CHECK-SAME: %swift.opaque*,
143
- // CHECK-SAME: %swift.type*
144
- // CHECK-SAME: )*
145
- // CHECK-SAME: }>* @"$s4main9Argument1[[UNIQUE_ID_1]]LLCySiGMf" to %swift.full_heapmetadata*
146
- // CHECK-SAME: ),
60
+ // CHECK-SAME: $s4main9Argument1[[UNIQUE_ID_1]]LLCySiGMf
147
61
// CHECK-SAME: i32 0,
148
62
// CHECK-SAME: i32 3
149
63
// CHECK-SAME: ),
150
- // CHECK-SAME: %swift.type* getelementptr inbounds (
64
+ // CHECK-SAME: ptr getelementptr inbounds (
151
65
// CHECK-SAME: %swift.full_heapmetadata,
152
- // CHECK-SAME: %swift.full_heapmetadata* bitcast (
153
- // CHECK-SAME: <{
154
- // CHECK-SAME: void (
155
- // CHECK-SAME: %T4main9Argument2[[UNIQUE_ID_1]]LLC*
156
- // CHECK-SAME: )*,
157
- // CHECK-SAME: i8**,
158
- // : [[INT]],
159
- // CHECK-apple-SAME: %objc_class*,
160
- // CHECK-unknown-SAME: %swift.type*,
161
- // CHECK-apple-SAME: %swift.opaque*,
162
- // CHECK-apple-SAME: %swift.opaque*,
163
- // CHECK-apple-SAME: [[INT]],
164
- // CHECK-SAME: i32,
165
- // CHECK-SAME: i32,
166
- // CHECK-SAME: i32,
167
- // CHECK-SAME: i16,
168
- // CHECK-SAME: i16,
169
- // CHECK-SAME: i32,
170
- // CHECK-SAME: i32,
171
- // CHECK-SAME: %swift.type_descriptor*,
172
- // CHECK-SAME: i8*,
173
- // CHECK-SAME: %swift.type*,
174
- // CHECK-SAME: [[INT]],
175
- // CHECK-SAME: %T4main9Argument2[[UNIQUE_ID_1]]LLC* (
176
- // CHECK-SAME: %swift.opaque*,
177
- // CHECK-SAME: %swift.type*
178
- // CHECK-SAME: )*
179
- // CHECK-SAME: }>* @"$s4main9Argument2[[UNIQUE_ID_1]]LLCySSGMf" to %swift.full_heapmetadata*
180
- // CHECK-SAME: ),
66
+ // CHECK-SAME: $s4main9Argument2[[UNIQUE_ID_1]]LLCySSGMf
181
67
// CHECK-SAME: i32 0,
182
68
// CHECK-SAME: i32 3
183
69
// CHECK-SAME: ),
184
70
// CHECK-SAME: [[INT]] {{(16|8)}},
185
71
// CHECK-SAME: [[INT]] {{(24|12)}},
186
- // CHECK-SAME: %T4main5Value[[UNIQUE_ID_1]]LLC* (
187
- // CHECK-SAME: %swift.opaque*,
188
- // CHECK-SAME: %swift.opaque*,
189
- // CHECK-SAME: %swift.type*
190
72
// CHECK-SAME: $s4main5Value[[UNIQUE_ID_1]]LLC5first6secondADyxq_Gx_q_tcfC
191
73
// CHECK-SAME: }>,
192
74
// CHECK-SAME: align [[ALIGNMENT]]
@@ -227,29 +109,22 @@ func consume<T>(_ t: T) {
227
109
// CHECK: [[METADATA_RESPONSE:%[0-9]+]] = call swiftcc %swift.metadata_response @"$s4main5Value[[UNIQUE_ID_4:[0-9A-Z_]+]]LLCyAA9Argument1ACLLCySiGAA9Argument2ACLLCySSGGMb"([[INT]] 0)
228
110
// CHECK: [[METADATA:%[0-9]+]] = extractvalue %swift.metadata_response [[METADATA_RESPONSE]], 0
229
111
// CHECK: call swiftcc void @"$s4main7consumeyyxlF"(
230
- // CHECK-SAME: %swift.opaque* noalias nocapture {{%[0-9]+}},
231
- // CHECK-SAME: %swift.type* [[METADATA]])
112
+ // CHECK-SAME: ptr noalias nocapture {{%[0-9]+}},
113
+ // CHECK-SAME: ptr [[METADATA]])
232
114
// CHECK: }
233
115
func doit( ) {
234
116
consume ( Value ( first: Argument1 ( value: 13 ) , second: Argument2 ( value: " 13 " ) ) )
235
117
}
236
118
doit ( )
237
119
238
- // CHECK: define internal swiftcc %swift.metadata_response @"$s4main5Value[[UNIQUE_ID_1]]LLCMa"([[INT]] [[METADATA_REQUEST:%[0-9]+]], %swift.type* [[ARGUMENT1_METADATA:%[0-9]+]], %swift.type* [[ARGUMENT2_METADATA:%[0-9]+]]) #{{[0-9]+}} {{(section)?.*}}{
239
- // CHECK: entry:
240
- // CHECK: [[ERASED_ARGUMENT1:%[0-9]+]] = bitcast %swift.type* [[ARGUMENT1_METADATA]] to i8*
241
- // CHECK: [[ERASED_ARGUMENT2:%[0-9]+]] = bitcast %swift.type* [[ARGUMENT2_METADATA]] to i8*
242
- // CHECK: {{%[0-9]+}} = call swiftcc %swift.metadata_response @__swift_instantiateCanonicalPrespecializedGenericMetadata(
243
- // CHECK: [[INT]] [[METADATA_REQUEST]],
244
- // CHECK: i8* [[ERASED_ARGUMENT1]],
245
- // CHECK: i8* [[ERASED_ARGUMENT2]],
246
- // CHECK: i8* undef,
247
- // CHECK: %swift.type_descriptor* bitcast (
248
- // : <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i16, i16, i16, i16, i8, i8, i8, i8, i32, i32, %swift.method_descriptor }>*
249
- // CHECK: $s4main5Value[[UNIQUE_ID_1]]LLCMn
250
- // CHECK: to %swift.type_descriptor*
251
- // CHECK: )
252
- // CHECK: ) #{{[0-9]+}}
120
+ // CHECK: define internal swiftcc %swift.metadata_response @"$s4main5Value[[UNIQUE_ID_1]]LLCMa"([[INT]] [[METADATA_REQUEST:%[0-9]+]], ptr [[ARGUMENT1_METADATA:%[0-9]+]], ptr [[ARGUMENT2_METADATA:%[0-9]+]]) #{{[0-9]+}} {{(section)?.*}}{
121
+ // CHECK: call swiftcc %swift.metadata_response @__swift_instantiateCanonicalPrespecializedGenericMetadata(
122
+ // CHECK-SAME: [[INT]] [[METADATA_REQUEST]],
123
+ // CHECK-SAME: ptr [[ARGUMENT1_METADATA]],
124
+ // CHECK-SAME: ptr [[ARGUMENT2_METADATA]],
125
+ // CHECK-SAME: ptr undef,
126
+ // CHECK-SAME: $s4main5Value[[UNIQUE_ID_1]]LLCMn
127
+ // CHECK-SAME: )
253
128
// CHECK: ret %swift.metadata_response {{%[0-9]+}}
254
129
// CHECK: }
255
130
@@ -259,50 +134,15 @@ doit()
259
134
// CHECK: call swiftcc %swift.metadata_response @"$s4main9Argument1[[UNIQUE_ID_1]]LLCySiGMb"([[INT]] 0)
260
135
// CHECK: call swiftcc %swift.metadata_response @"$s4main9Argument2[[UNIQUE_ID_1]]LLCySSGMb"([[INT]] 0)
261
136
// CHECK-unknown: ret
262
- // CHECK-apple: [[INITIALIZED_CLASS:%[0-9]+]] = call %objc_class* @objc_opt_self(
263
- // : %objc_class* bitcast (
264
- // : %swift.type* getelementptr inbounds (
265
- // : %swift.full_heapmetadata,
266
- // : %swift.full_heapmetadata* bitcast (
267
- // : <{
268
- // : void (
269
- // : %T4main5Value[[UNIQUE_ID_1]]LLC*
270
- // : )*,
271
- // : i8**,
272
- // : [[INT]],
273
- // : %objc_class*,
274
- // : %swift.opaque*,
275
- // : %swift.opaque*,
276
- // : [[INT]],
277
- // : i32,
278
- // : i32,
279
- // : i32,
280
- // : i16,
281
- // : i16,
282
- // : i32,
283
- // : i32,
284
- // : %swift.type_descriptor*,
285
- // : i8*,
286
- // : %swift.type*,
287
- // : %swift.type*,
288
- // : [[INT]],
289
- // : [[INT]],
290
- // : %T4main5Value[[UNIQUE_ID_1]]LLC* (
291
- // : %swift.opaque*,
292
- // : %swift.opaque*,
293
- // : %swift.type*
294
- // : )*
295
- // : }>*
296
- // CHECK-SAME: @"$s4main5Value[[UNIQUE_ID_1]]LLCyAA9Argument1ACLLCySiGAA9Argument2ACLLCySSGGMf"
297
- // : to %swift.full_heapmetadata*
298
- // : ),
299
- // : i32 0,
300
- // : i32 2
301
- // : ) to %objc_class*
137
+ // CHECK-apple: [[INITIALIZED_CLASS:%[0-9]+]] = call ptr @objc_opt_self(
138
+ // : ptr getelementptr inbounds (
139
+ // : %swift.full_heapmetadata,
140
+ // CHECK-SAME: $s4main5Value[[UNIQUE_ID_1]]LLCyAA9Argument1ACLLCySiGAA9Argument2ACLLCySSGGMf
141
+ // : i32 0,
142
+ // : i32 2
302
143
// : )
303
144
// : )
304
- // CHECK-apple: [[INITIALIZED_METADATA:%[0-9]+]] = bitcast %objc_class* [[INITIALIZED_CLASS]] to %swift.type*
305
- // CHECK-apple: [[PARTIAL_METADATA_RESPONSE:%[0-9]+]] = insertvalue %swift.metadata_response undef, %swift.type* [[INITIALIZED_METADATA]], 0
145
+ // CHECK-apple: [[PARTIAL_METADATA_RESPONSE:%[0-9]+]] = insertvalue %swift.metadata_response undef, ptr [[INITIALIZED_CLASS]], 0
306
146
// CHECK-apple: [[METADATA_RESPONSE:%[0-9]+]] = insertvalue %swift.metadata_response [[PARTIAL_METADATA_RESPONSE]], [[INT]] 0, 1
307
147
// CHECK-apple: ret %swift.metadata_response [[METADATA_RESPONSE]]
308
148
// CHECK: }
0 commit comments