@@ -29,12 +29,11 @@ struct Sp {
29
29
int *x;
30
30
};
31
31
// CHECK-A64-LABEL: define dso_local void @_Z2Tp2Sp(
32
- // CHECK-A64-SAME: i64 [[S_COERCE:%.*]]) #[[ATTR0]] {
32
+ // CHECK-A64-SAME: ptr [[S_COERCE:%.*]]) #[[ATTR0]] {
33
33
// CHECK-A64-NEXT: [[ENTRY:.*:]]
34
34
// CHECK-A64-NEXT: [[S:%.*]] = alloca [[STRUCT_SP:%.*]], align 8
35
35
// CHECK-A64-NEXT: [[COERCE_DIVE:%.*]] = getelementptr inbounds nuw [[STRUCT_SP]], ptr [[S]], i32 0, i32 0
36
- // CHECK-A64-NEXT: [[COERCE_VAL_IP:%.*]] = inttoptr i64 [[S_COERCE]] to ptr
37
- // CHECK-A64-NEXT: store ptr [[COERCE_VAL_IP]], ptr [[COERCE_DIVE]], align 8
36
+ // CHECK-A64-NEXT: store ptr [[S_COERCE]], ptr [[COERCE_DIVE]], align 8
38
37
// CHECK-A64-NEXT: [[X:%.*]] = getelementptr inbounds nuw [[STRUCT_SP]], ptr [[S]], i32 0, i32 0
39
38
// CHECK-A64-NEXT: [[TMP0:%.*]] = load ptr, ptr [[X]], align 8
40
39
// CHECK-A64-NEXT: store i32 1, ptr [[TMP0]], align 4
@@ -58,10 +57,10 @@ struct Spp {
58
57
int *x, *y;
59
58
};
60
59
// CHECK-A64-LABEL: define dso_local void @_Z3Tpp3Spp(
61
- // CHECK-A64-SAME: [2 x i64 ] [[S_COERCE:%.*]]) #[[ATTR0]] {
60
+ // CHECK-A64-SAME: [2 x ptr ] [[S_COERCE:%.*]]) #[[ATTR0]] {
62
61
// CHECK-A64-NEXT: [[ENTRY:.*:]]
63
62
// CHECK-A64-NEXT: [[S:%.*]] = alloca [[STRUCT_SPP:%.*]], align 8
64
- // CHECK-A64-NEXT: store [2 x i64 ] [[S_COERCE]], ptr [[S]], align 8
63
+ // CHECK-A64-NEXT: store [2 x ptr ] [[S_COERCE]], ptr [[S]], align 8
65
64
// CHECK-A64-NEXT: [[X:%.*]] = getelementptr inbounds nuw [[STRUCT_SPP]], ptr [[S]], i32 0, i32 0
66
65
// CHECK-A64-NEXT: [[TMP0:%.*]] = load ptr, ptr [[X]], align 8
67
66
// CHECK-A64-NEXT: store i32 1, ptr [[TMP0]], align 4
@@ -135,10 +134,10 @@ struct Srp {
135
134
int &x, *y;
136
135
};
137
136
// CHECK-A64-LABEL: define dso_local void @_Z3Trp3Srp(
138
- // CHECK-A64-SAME: [2 x i64 ] [[S_COERCE:%.*]]) #[[ATTR0]] {
137
+ // CHECK-A64-SAME: [2 x ptr ] [[S_COERCE:%.*]]) #[[ATTR0]] {
139
138
// CHECK-A64-NEXT: [[ENTRY:.*:]]
140
139
// CHECK-A64-NEXT: [[S:%.*]] = alloca [[STRUCT_SRP:%.*]], align 8
141
- // CHECK-A64-NEXT: store [2 x i64 ] [[S_COERCE]], ptr [[S]], align 8
140
+ // CHECK-A64-NEXT: store [2 x ptr ] [[S_COERCE]], ptr [[S]], align 8
142
141
// CHECK-A64-NEXT: [[X:%.*]] = getelementptr inbounds nuw [[STRUCT_SRP]], ptr [[S]], i32 0, i32 0
143
142
// CHECK-A64-NEXT: [[TMP0:%.*]] = load ptr, ptr [[X]], align 8
144
143
// CHECK-A64-NEXT: store i32 1, ptr [[TMP0]], align 4
@@ -160,10 +159,10 @@ struct __attribute__((__packed__)) Spp_packed {
160
159
int *x, *y;
161
160
};
162
161
// CHECK-A64-LABEL: define dso_local void @_Z10Tpp_packed10Spp_packed(
163
- // CHECK-A64-SAME: [2 x i64 ] [[S_COERCE:%.*]]) #[[ATTR0]] {
162
+ // CHECK-A64-SAME: [2 x ptr ] [[S_COERCE:%.*]]) #[[ATTR0]] {
164
163
// CHECK-A64-NEXT: [[ENTRY:.*:]]
165
164
// CHECK-A64-NEXT: [[S:%.*]] = alloca [[STRUCT_SPP_PACKED:%.*]], align 1
166
- // CHECK-A64-NEXT: store [2 x i64 ] [[S_COERCE]], ptr [[S]], align 1
165
+ // CHECK-A64-NEXT: store [2 x ptr ] [[S_COERCE]], ptr [[S]], align 1
167
166
// CHECK-A64-NEXT: [[X:%.*]] = getelementptr inbounds nuw [[STRUCT_SPP_PACKED]], ptr [[S]], i32 0, i32 0
168
167
// CHECK-A64-NEXT: [[TMP0:%.*]] = load ptr, ptr [[X]], align 1
169
168
// CHECK-A64-NEXT: store i32 1, ptr [[TMP0]], align 4
@@ -185,11 +184,11 @@ struct __attribute__((__packed__)) Spp_superpacked {
185
184
Spp_packed x;
186
185
};
187
186
// CHECK-A64-LABEL: define dso_local void @_Z15Tpp_superpacked15Spp_superpacked(
188
- // CHECK-A64-SAME: [2 x i64 ] [[S_COERCE:%.*]]) #[[ATTR0]] {
187
+ // CHECK-A64-SAME: [2 x ptr ] [[S_COERCE:%.*]]) #[[ATTR0]] {
189
188
// CHECK-A64-NEXT: [[ENTRY:.*:]]
190
189
// CHECK-A64-NEXT: [[S:%.*]] = alloca [[STRUCT_SPP_SUPERPACKED:%.*]], align 1
191
190
// CHECK-A64-NEXT: [[COERCE_DIVE:%.*]] = getelementptr inbounds nuw [[STRUCT_SPP_SUPERPACKED]], ptr [[S]], i32 0, i32 0
192
- // CHECK-A64-NEXT: store [2 x i64 ] [[S_COERCE]], ptr [[COERCE_DIVE]], align 1
191
+ // CHECK-A64-NEXT: store [2 x ptr ] [[S_COERCE]], ptr [[COERCE_DIVE]], align 1
193
192
// CHECK-A64-NEXT: [[X:%.*]] = getelementptr inbounds nuw [[STRUCT_SPP_SUPERPACKED]], ptr [[S]], i32 0, i32 0
194
193
// CHECK-A64-NEXT: [[X1:%.*]] = getelementptr inbounds nuw [[STRUCT_SPP_PACKED:%.*]], ptr [[X]], i32 0, i32 0
195
194
// CHECK-A64-NEXT: [[TMP0:%.*]] = load ptr, ptr [[X1]], align 1
@@ -215,12 +214,11 @@ union Upp {
215
214
long long *y;
216
215
};
217
216
// CHECK-A64-LABEL: define dso_local void @_Z11Tupp_packed3Upp(
218
- // CHECK-A64-SAME: i64 [[S_COERCE:%.*]]) #[[ATTR0]] {
217
+ // CHECK-A64-SAME: ptr [[S_COERCE:%.*]]) #[[ATTR0]] {
219
218
// CHECK-A64-NEXT: [[ENTRY:.*:]]
220
219
// CHECK-A64-NEXT: [[S:%.*]] = alloca [[UNION_UPP:%.*]], align 8
221
220
// CHECK-A64-NEXT: [[COERCE_DIVE:%.*]] = getelementptr inbounds nuw [[UNION_UPP]], ptr [[S]], i32 0, i32 0
222
- // CHECK-A64-NEXT: [[COERCE_VAL_IP:%.*]] = inttoptr i64 [[S_COERCE]] to ptr
223
- // CHECK-A64-NEXT: store ptr [[COERCE_VAL_IP]], ptr [[COERCE_DIVE]], align 8
221
+ // CHECK-A64-NEXT: store ptr [[S_COERCE]], ptr [[COERCE_DIVE]], align 8
224
222
// CHECK-A64-NEXT: [[TMP0:%.*]] = load ptr, ptr [[S]], align 8
225
223
// CHECK-A64-NEXT: store i32 1, ptr [[TMP0]], align 4
226
224
// CHECK-A64-NEXT: ret void
@@ -326,10 +324,10 @@ struct SSpSp {
326
324
struct Sp a, b;
327
325
};
328
326
// CHECK-A64-LABEL: define dso_local void @_Z5TSpSp5SSpSp(
329
- // CHECK-A64-SAME: [2 x i64 ] [[S_COERCE:%.*]]) #[[ATTR0]] {
327
+ // CHECK-A64-SAME: [2 x ptr ] [[S_COERCE:%.*]]) #[[ATTR0]] {
330
328
// CHECK-A64-NEXT: [[ENTRY:.*:]]
331
329
// CHECK-A64-NEXT: [[S:%.*]] = alloca [[STRUCT_SSPSP:%.*]], align 8
332
- // CHECK-A64-NEXT: store [2 x i64 ] [[S_COERCE]], ptr [[S]], align 8
330
+ // CHECK-A64-NEXT: store [2 x ptr ] [[S_COERCE]], ptr [[S]], align 8
333
331
// CHECK-A64-NEXT: [[A:%.*]] = getelementptr inbounds nuw [[STRUCT_SSPSP]], ptr [[S]], i32 0, i32 0
334
332
// CHECK-A64-NEXT: [[X:%.*]] = getelementptr inbounds nuw [[STRUCT_SP:%.*]], ptr [[A]], i32 0, i32 0
335
333
// CHECK-A64-NEXT: [[TMP0:%.*]] = load ptr, ptr [[X]], align 8
@@ -353,11 +351,11 @@ struct SSpp {
353
351
Spp a;
354
352
};
355
353
// CHECK-A64-LABEL: define dso_local void @_Z4TSpp4SSpp(
356
- // CHECK-A64-SAME: [2 x i64 ] [[S_COERCE:%.*]]) #[[ATTR0]] {
354
+ // CHECK-A64-SAME: [2 x ptr ] [[S_COERCE:%.*]]) #[[ATTR0]] {
357
355
// CHECK-A64-NEXT: [[ENTRY:.*:]]
358
356
// CHECK-A64-NEXT: [[S:%.*]] = alloca [[STRUCT_SSPP:%.*]], align 8
359
357
// CHECK-A64-NEXT: [[COERCE_DIVE:%.*]] = getelementptr inbounds nuw [[STRUCT_SSPP]], ptr [[S]], i32 0, i32 0
360
- // CHECK-A64-NEXT: store [2 x i64 ] [[S_COERCE]], ptr [[COERCE_DIVE]], align 8
358
+ // CHECK-A64-NEXT: store [2 x ptr ] [[S_COERCE]], ptr [[COERCE_DIVE]], align 8
361
359
// CHECK-A64-NEXT: [[A:%.*]] = getelementptr inbounds nuw [[STRUCT_SSPP]], ptr [[S]], i32 0, i32 0
362
360
// CHECK-A64-NEXT: [[X:%.*]] = getelementptr inbounds nuw [[STRUCT_SPP:%.*]], ptr [[A]], i32 0, i32 0
363
361
// CHECK-A64-NEXT: [[TMP0:%.*]] = load ptr, ptr [[X]], align 8
@@ -382,10 +380,10 @@ struct SSp : public Sp {
382
380
int * b;
383
381
};
384
382
// CHECK-A64-LABEL: define dso_local void @_Z3TSp3SSp(
385
- // CHECK-A64-SAME: [2 x i64 ] [[S_COERCE:%.*]]) #[[ATTR0]] {
383
+ // CHECK-A64-SAME: [2 x ptr ] [[S_COERCE:%.*]]) #[[ATTR0]] {
386
384
// CHECK-A64-NEXT: [[ENTRY:.*:]]
387
385
// CHECK-A64-NEXT: [[S:%.*]] = alloca [[STRUCT_SSP:%.*]], align 8
388
- // CHECK-A64-NEXT: store [2 x i64 ] [[S_COERCE]], ptr [[S]], align 8
386
+ // CHECK-A64-NEXT: store [2 x ptr ] [[S_COERCE]], ptr [[S]], align 8
389
387
// CHECK-A64-NEXT: [[X:%.*]] = getelementptr inbounds nuw [[STRUCT_SP:%.*]], ptr [[S]], i32 0, i32 0
390
388
// CHECK-A64-NEXT: [[TMP0:%.*]] = load ptr, ptr [[X]], align 8
391
389
// CHECK-A64-NEXT: store i32 1, ptr [[TMP0]], align 4
@@ -433,11 +431,11 @@ struct Spa {
433
431
int * xs[1 ];
434
432
};
435
433
// CHECK-A64-LABEL: define dso_local void @_Z3Tpa3Spa(
436
- // CHECK-A64-SAME: i64 [[S_COERCE:%.*]]) #[[ATTR0]] {
434
+ // CHECK-A64-SAME: ptr [[S_COERCE:%.*]]) #[[ATTR0]] {
437
435
// CHECK-A64-NEXT: [[ENTRY:.*:]]
438
436
// CHECK-A64-NEXT: [[S:%.*]] = alloca [[STRUCT_SPA:%.*]], align 8
439
437
// CHECK-A64-NEXT: [[COERCE_DIVE:%.*]] = getelementptr inbounds nuw [[STRUCT_SPA]], ptr [[S]], i32 0, i32 0
440
- // CHECK-A64-NEXT: store i64 [[S_COERCE]], ptr [[COERCE_DIVE]], align 8
438
+ // CHECK-A64-NEXT: store ptr [[S_COERCE]], ptr [[COERCE_DIVE]], align 8
441
439
// CHECK-A64-NEXT: [[XS:%.*]] = getelementptr inbounds nuw [[STRUCT_SPA]], ptr [[S]], i32 0, i32 0
442
440
// CHECK-A64-NEXT: [[ARRAYIDX:%.*]] = getelementptr inbounds [1 x ptr], ptr [[XS]], i64 0, i64 0
443
441
// CHECK-A64-NEXT: [[TMP0:%.*]] = load ptr, ptr [[ARRAYIDX]], align 8
@@ -463,11 +461,11 @@ struct Spa2 {
463
461
int * xs[2 ];
464
462
};
465
463
// CHECK-A64-LABEL: define dso_local void @_Z4Tpa24Spa2(
466
- // CHECK-A64-SAME: [2 x i64 ] [[S_COERCE:%.*]]) #[[ATTR0]] {
464
+ // CHECK-A64-SAME: [2 x ptr ] [[S_COERCE:%.*]]) #[[ATTR0]] {
467
465
// CHECK-A64-NEXT: [[ENTRY:.*:]]
468
466
// CHECK-A64-NEXT: [[S:%.*]] = alloca [[STRUCT_SPA2:%.*]], align 8
469
467
// CHECK-A64-NEXT: [[COERCE_DIVE:%.*]] = getelementptr inbounds nuw [[STRUCT_SPA2]], ptr [[S]], i32 0, i32 0
470
- // CHECK-A64-NEXT: store [2 x i64 ] [[S_COERCE]], ptr [[COERCE_DIVE]], align 8
468
+ // CHECK-A64-NEXT: store [2 x ptr ] [[S_COERCE]], ptr [[COERCE_DIVE]], align 8
471
469
// CHECK-A64-NEXT: [[XS:%.*]] = getelementptr inbounds nuw [[STRUCT_SPA2]], ptr [[S]], i32 0, i32 0
472
470
// CHECK-A64-NEXT: [[ARRAYIDX:%.*]] = getelementptr inbounds [2 x ptr], ptr [[XS]], i64 0, i64 0
473
471
// CHECK-A64-NEXT: [[TMP0:%.*]] = load ptr, ptr [[ARRAYIDX]], align 8
@@ -523,10 +521,10 @@ struct __attribute__((aligned(16))) Spp_align16 {
523
521
int *x, *y;
524
522
};
525
523
// CHECK-A64-LABEL: define dso_local void @_Z11Tpp_align1611Spp_align16(
526
- // CHECK-A64-SAME: [2 x i64 ] [[S_COERCE:%.*]]) #[[ATTR0]] {
524
+ // CHECK-A64-SAME: [2 x ptr ] [[S_COERCE:%.*]]) #[[ATTR0]] {
527
525
// CHECK-A64-NEXT: [[ENTRY:.*:]]
528
526
// CHECK-A64-NEXT: [[S:%.*]] = alloca [[STRUCT_SPP_ALIGN16:%.*]], align 16
529
- // CHECK-A64-NEXT: store [2 x i64 ] [[S_COERCE]], ptr [[S]], align 16
527
+ // CHECK-A64-NEXT: store [2 x ptr ] [[S_COERCE]], ptr [[S]], align 16
530
528
// CHECK-A64-NEXT: [[X:%.*]] = getelementptr inbounds nuw [[STRUCT_SPP_ALIGN16]], ptr [[S]], i32 0, i32 0
531
529
// CHECK-A64-NEXT: [[TMP0:%.*]] = load ptr, ptr [[X]], align 16
532
530
// CHECK-A64-NEXT: store i32 1, ptr [[TMP0]], align 4
0 commit comments