@@ -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
@@ -186,12 +185,11 @@ union Upp {
186
185
long long *y;
187
186
};
188
187
// CHECK-A64-LABEL: define dso_local void @_Z11Tupp_packed3Upp(
189
- // CHECK-A64-SAME: i64 [[S_COERCE:%.*]]) #[[ATTR0]] {
188
+ // CHECK-A64-SAME: ptr [[S_COERCE:%.*]]) #[[ATTR0]] {
190
189
// CHECK-A64-NEXT: [[ENTRY:.*:]]
191
190
// CHECK-A64-NEXT: [[S:%.*]] = alloca [[UNION_UPP:%.*]], align 8
192
191
// CHECK-A64-NEXT: [[COERCE_DIVE:%.*]] = getelementptr inbounds nuw [[UNION_UPP]], ptr [[S]], i32 0, i32 0
193
- // CHECK-A64-NEXT: [[COERCE_VAL_IP:%.*]] = inttoptr i64 [[S_COERCE]] to ptr
194
- // CHECK-A64-NEXT: store ptr [[COERCE_VAL_IP]], ptr [[COERCE_DIVE]], align 8
192
+ // CHECK-A64-NEXT: store ptr [[S_COERCE]], ptr [[COERCE_DIVE]], align 8
195
193
// CHECK-A64-NEXT: [[TMP0:%.*]] = load ptr, ptr [[S]], align 8
196
194
// CHECK-A64-NEXT: store i32 1, ptr [[TMP0]], align 4
197
195
// CHECK-A64-NEXT: ret void
@@ -297,10 +295,10 @@ struct SSpSp {
297
295
struct Sp a, b;
298
296
};
299
297
// CHECK-A64-LABEL: define dso_local void @_Z5TSpSp5SSpSp(
300
- // CHECK-A64-SAME: [2 x i64 ] [[S_COERCE:%.*]]) #[[ATTR0]] {
298
+ // CHECK-A64-SAME: [2 x ptr ] [[S_COERCE:%.*]]) #[[ATTR0]] {
301
299
// CHECK-A64-NEXT: [[ENTRY:.*:]]
302
300
// CHECK-A64-NEXT: [[S:%.*]] = alloca [[STRUCT_SSPSP:%.*]], align 8
303
- // CHECK-A64-NEXT: store [2 x i64 ] [[S_COERCE]], ptr [[S]], align 8
301
+ // CHECK-A64-NEXT: store [2 x ptr ] [[S_COERCE]], ptr [[S]], align 8
304
302
// CHECK-A64-NEXT: [[A:%.*]] = getelementptr inbounds nuw [[STRUCT_SSPSP]], ptr [[S]], i32 0, i32 0
305
303
// CHECK-A64-NEXT: [[X:%.*]] = getelementptr inbounds nuw [[STRUCT_SP:%.*]], ptr [[A]], i32 0, i32 0
306
304
// CHECK-A64-NEXT: [[TMP0:%.*]] = load ptr, ptr [[X]], align 8
@@ -324,11 +322,11 @@ struct SSpp {
324
322
Spp a;
325
323
};
326
324
// CHECK-A64-LABEL: define dso_local void @_Z4TSpp4SSpp(
327
- // CHECK-A64-SAME: [2 x i64 ] [[S_COERCE:%.*]]) #[[ATTR0]] {
325
+ // CHECK-A64-SAME: [2 x ptr ] [[S_COERCE:%.*]]) #[[ATTR0]] {
328
326
// CHECK-A64-NEXT: [[ENTRY:.*:]]
329
327
// CHECK-A64-NEXT: [[S:%.*]] = alloca [[STRUCT_SSPP:%.*]], align 8
330
328
// CHECK-A64-NEXT: [[COERCE_DIVE:%.*]] = getelementptr inbounds nuw [[STRUCT_SSPP]], ptr [[S]], i32 0, i32 0
331
- // CHECK-A64-NEXT: store [2 x i64 ] [[S_COERCE]], ptr [[COERCE_DIVE]], align 8
329
+ // CHECK-A64-NEXT: store [2 x ptr ] [[S_COERCE]], ptr [[COERCE_DIVE]], align 8
332
330
// CHECK-A64-NEXT: [[A:%.*]] = getelementptr inbounds nuw [[STRUCT_SSPP]], ptr [[S]], i32 0, i32 0
333
331
// CHECK-A64-NEXT: [[X:%.*]] = getelementptr inbounds nuw [[STRUCT_SPP:%.*]], ptr [[A]], i32 0, i32 0
334
332
// CHECK-A64-NEXT: [[TMP0:%.*]] = load ptr, ptr [[X]], align 8
@@ -353,10 +351,10 @@ struct SSp : public Sp {
353
351
int * b;
354
352
};
355
353
// CHECK-A64-LABEL: define dso_local void @_Z3TSp3SSp(
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_SSP:%.*]], align 8
359
- // CHECK-A64-NEXT: store [2 x i64 ] [[S_COERCE]], ptr [[S]], align 8
357
+ // CHECK-A64-NEXT: store [2 x ptr ] [[S_COERCE]], ptr [[S]], align 8
360
358
// CHECK-A64-NEXT: [[X:%.*]] = getelementptr inbounds nuw [[STRUCT_SP:%.*]], ptr [[S]], i32 0, i32 0
361
359
// CHECK-A64-NEXT: [[TMP0:%.*]] = load ptr, ptr [[X]], align 8
362
360
// CHECK-A64-NEXT: store i32 1, ptr [[TMP0]], align 4
@@ -404,11 +402,11 @@ struct Spa {
404
402
int * xs[1 ];
405
403
};
406
404
// CHECK-A64-LABEL: define dso_local void @_Z3Tpa3Spa(
407
- // CHECK-A64-SAME: i64 [[S_COERCE:%.*]]) #[[ATTR0]] {
405
+ // CHECK-A64-SAME: ptr [[S_COERCE:%.*]]) #[[ATTR0]] {
408
406
// CHECK-A64-NEXT: [[ENTRY:.*:]]
409
407
// CHECK-A64-NEXT: [[S:%.*]] = alloca [[STRUCT_SPA:%.*]], align 8
410
408
// CHECK-A64-NEXT: [[COERCE_DIVE:%.*]] = getelementptr inbounds nuw [[STRUCT_SPA]], ptr [[S]], i32 0, i32 0
411
- // CHECK-A64-NEXT: store i64 [[S_COERCE]], ptr [[COERCE_DIVE]], align 8
409
+ // CHECK-A64-NEXT: store ptr [[S_COERCE]], ptr [[COERCE_DIVE]], align 8
412
410
// CHECK-A64-NEXT: [[XS:%.*]] = getelementptr inbounds nuw [[STRUCT_SPA]], ptr [[S]], i32 0, i32 0
413
411
// CHECK-A64-NEXT: [[ARRAYIDX:%.*]] = getelementptr inbounds [1 x ptr], ptr [[XS]], i64 0, i64 0
414
412
// CHECK-A64-NEXT: [[TMP0:%.*]] = load ptr, ptr [[ARRAYIDX]], align 8
@@ -434,11 +432,11 @@ struct Spa2 {
434
432
int * xs[2 ];
435
433
};
436
434
// CHECK-A64-LABEL: define dso_local void @_Z4Tpa24Spa2(
437
- // CHECK-A64-SAME: [2 x i64 ] [[S_COERCE:%.*]]) #[[ATTR0]] {
435
+ // CHECK-A64-SAME: [2 x ptr ] [[S_COERCE:%.*]]) #[[ATTR0]] {
438
436
// CHECK-A64-NEXT: [[ENTRY:.*:]]
439
437
// CHECK-A64-NEXT: [[S:%.*]] = alloca [[STRUCT_SPA2:%.*]], align 8
440
438
// CHECK-A64-NEXT: [[COERCE_DIVE:%.*]] = getelementptr inbounds nuw [[STRUCT_SPA2]], ptr [[S]], i32 0, i32 0
441
- // CHECK-A64-NEXT: store [2 x i64 ] [[S_COERCE]], ptr [[COERCE_DIVE]], align 8
439
+ // CHECK-A64-NEXT: store [2 x ptr ] [[S_COERCE]], ptr [[COERCE_DIVE]], align 8
442
440
// CHECK-A64-NEXT: [[XS:%.*]] = getelementptr inbounds nuw [[STRUCT_SPA2]], ptr [[S]], i32 0, i32 0
443
441
// CHECK-A64-NEXT: [[ARRAYIDX:%.*]] = getelementptr inbounds [2 x ptr], ptr [[XS]], i64 0, i64 0
444
442
// CHECK-A64-NEXT: [[TMP0:%.*]] = load ptr, ptr [[ARRAYIDX]], align 8
@@ -494,10 +492,10 @@ struct __attribute__((aligned(16))) Spp_align16 {
494
492
int *x, *y;
495
493
};
496
494
// CHECK-A64-LABEL: define dso_local void @_Z11Tpp_align1611Spp_align16(
497
- // CHECK-A64-SAME: [2 x i64 ] [[S_COERCE:%.*]]) #[[ATTR0]] {
495
+ // CHECK-A64-SAME: [2 x ptr ] [[S_COERCE:%.*]]) #[[ATTR0]] {
498
496
// CHECK-A64-NEXT: [[ENTRY:.*:]]
499
497
// CHECK-A64-NEXT: [[S:%.*]] = alloca [[STRUCT_SPP_ALIGN16:%.*]], align 16
500
- // CHECK-A64-NEXT: store [2 x i64 ] [[S_COERCE]], ptr [[S]], align 16
498
+ // CHECK-A64-NEXT: store [2 x ptr ] [[S_COERCE]], ptr [[S]], align 16
501
499
// CHECK-A64-NEXT: [[X:%.*]] = getelementptr inbounds nuw [[STRUCT_SPP_ALIGN16]], ptr [[S]], i32 0, i32 0
502
500
// CHECK-A64-NEXT: [[TMP0:%.*]] = load ptr, ptr [[X]], align 16
503
501
// CHECK-A64-NEXT: store i32 1, ptr [[TMP0]], align 4
0 commit comments