@@ -29,12 +29,11 @@ struct Sp {
2929 int *x;
3030};
3131// CHECK-A64-LABEL: define dso_local void @_Z2Tp2Sp(
32- // CHECK-A64-SAME: i64 [[S_COERCE:%.*]]) #[[ATTR0]] {
32+ // CHECK-A64-SAME: ptr [[S_COERCE:%.*]]) #[[ATTR0]] {
3333// CHECK-A64-NEXT: [[ENTRY:.*:]]
3434// CHECK-A64-NEXT: [[S:%.*]] = alloca [[STRUCT_SP:%.*]], align 8
3535// 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
3837// CHECK-A64-NEXT: [[X:%.*]] = getelementptr inbounds nuw [[STRUCT_SP]], ptr [[S]], i32 0, i32 0
3938// CHECK-A64-NEXT: [[TMP0:%.*]] = load ptr, ptr [[X]], align 8
4039// CHECK-A64-NEXT: store i32 1, ptr [[TMP0]], align 4
@@ -58,10 +57,10 @@ struct Spp {
5857 int *x, *y;
5958};
6059// 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]] {
6261// CHECK-A64-NEXT: [[ENTRY:.*:]]
6362// 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
6564// CHECK-A64-NEXT: [[X:%.*]] = getelementptr inbounds nuw [[STRUCT_SPP]], ptr [[S]], i32 0, i32 0
6665// CHECK-A64-NEXT: [[TMP0:%.*]] = load ptr, ptr [[X]], align 8
6766// CHECK-A64-NEXT: store i32 1, ptr [[TMP0]], align 4
@@ -135,10 +134,10 @@ struct Srp {
135134 int &x, *y;
136135};
137136// 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]] {
139138// CHECK-A64-NEXT: [[ENTRY:.*:]]
140139// 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
142141// CHECK-A64-NEXT: [[X:%.*]] = getelementptr inbounds nuw [[STRUCT_SRP]], ptr [[S]], i32 0, i32 0
143142// CHECK-A64-NEXT: [[TMP0:%.*]] = load ptr, ptr [[X]], align 8
144143// CHECK-A64-NEXT: store i32 1, ptr [[TMP0]], align 4
@@ -160,10 +159,10 @@ struct __attribute__((__packed__)) Spp_packed {
160159 int *x, *y;
161160};
162161// 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]] {
164163// CHECK-A64-NEXT: [[ENTRY:.*:]]
165164// 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
167166// CHECK-A64-NEXT: [[X:%.*]] = getelementptr inbounds nuw [[STRUCT_SPP_PACKED]], ptr [[S]], i32 0, i32 0
168167// CHECK-A64-NEXT: [[TMP0:%.*]] = load ptr, ptr [[X]], align 1
169168// CHECK-A64-NEXT: store i32 1, ptr [[TMP0]], align 4
@@ -185,11 +184,11 @@ struct __attribute__((__packed__)) Spp_superpacked {
185184 Spp_packed x;
186185};
187186// 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]] {
189188// CHECK-A64-NEXT: [[ENTRY:.*:]]
190189// CHECK-A64-NEXT: [[S:%.*]] = alloca [[STRUCT_SPP_SUPERPACKED:%.*]], align 1
191190// 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
193192// CHECK-A64-NEXT: [[X:%.*]] = getelementptr inbounds nuw [[STRUCT_SPP_SUPERPACKED]], ptr [[S]], i32 0, i32 0
194193// CHECK-A64-NEXT: [[X1:%.*]] = getelementptr inbounds nuw [[STRUCT_SPP_PACKED:%.*]], ptr [[X]], i32 0, i32 0
195194// CHECK-A64-NEXT: [[TMP0:%.*]] = load ptr, ptr [[X1]], align 1
@@ -215,12 +214,11 @@ union Upp {
215214 long long *y;
216215};
217216// 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]] {
219218// CHECK-A64-NEXT: [[ENTRY:.*:]]
220219// CHECK-A64-NEXT: [[S:%.*]] = alloca [[UNION_UPP:%.*]], align 8
221220// 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
224222// CHECK-A64-NEXT: [[TMP0:%.*]] = load ptr, ptr [[S]], align 8
225223// CHECK-A64-NEXT: store i32 1, ptr [[TMP0]], align 4
226224// CHECK-A64-NEXT: ret void
@@ -326,10 +324,10 @@ struct SSpSp {
326324 struct Sp a, b;
327325};
328326// 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]] {
330328// CHECK-A64-NEXT: [[ENTRY:.*:]]
331329// 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
333331// CHECK-A64-NEXT: [[A:%.*]] = getelementptr inbounds nuw [[STRUCT_SSPSP]], ptr [[S]], i32 0, i32 0
334332// CHECK-A64-NEXT: [[X:%.*]] = getelementptr inbounds nuw [[STRUCT_SP:%.*]], ptr [[A]], i32 0, i32 0
335333// CHECK-A64-NEXT: [[TMP0:%.*]] = load ptr, ptr [[X]], align 8
@@ -353,11 +351,11 @@ struct SSpp {
353351 Spp a;
354352};
355353// 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]] {
357355// CHECK-A64-NEXT: [[ENTRY:.*:]]
358356// CHECK-A64-NEXT: [[S:%.*]] = alloca [[STRUCT_SSPP:%.*]], align 8
359357// 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
361359// CHECK-A64-NEXT: [[A:%.*]] = getelementptr inbounds nuw [[STRUCT_SSPP]], ptr [[S]], i32 0, i32 0
362360// CHECK-A64-NEXT: [[X:%.*]] = getelementptr inbounds nuw [[STRUCT_SPP:%.*]], ptr [[A]], i32 0, i32 0
363361// CHECK-A64-NEXT: [[TMP0:%.*]] = load ptr, ptr [[X]], align 8
@@ -382,10 +380,10 @@ struct SSp : public Sp {
382380 int * b;
383381};
384382// 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]] {
386384// CHECK-A64-NEXT: [[ENTRY:.*:]]
387385// 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
389387// CHECK-A64-NEXT: [[X:%.*]] = getelementptr inbounds nuw [[STRUCT_SP:%.*]], ptr [[S]], i32 0, i32 0
390388// CHECK-A64-NEXT: [[TMP0:%.*]] = load ptr, ptr [[X]], align 8
391389// CHECK-A64-NEXT: store i32 1, ptr [[TMP0]], align 4
@@ -433,11 +431,11 @@ struct Spa {
433431 int * xs[1 ];
434432};
435433// CHECK-A64-LABEL: define dso_local void @_Z3Tpa3Spa(
436- // CHECK-A64-SAME: i64 [[S_COERCE:%.*]]) #[[ATTR0]] {
434+ // CHECK-A64-SAME: ptr [[S_COERCE:%.*]]) #[[ATTR0]] {
437435// CHECK-A64-NEXT: [[ENTRY:.*:]]
438436// CHECK-A64-NEXT: [[S:%.*]] = alloca [[STRUCT_SPA:%.*]], align 8
439437// 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
441439// CHECK-A64-NEXT: [[XS:%.*]] = getelementptr inbounds nuw [[STRUCT_SPA]], ptr [[S]], i32 0, i32 0
442440// CHECK-A64-NEXT: [[ARRAYIDX:%.*]] = getelementptr inbounds [1 x ptr], ptr [[XS]], i64 0, i64 0
443441// CHECK-A64-NEXT: [[TMP0:%.*]] = load ptr, ptr [[ARRAYIDX]], align 8
@@ -463,11 +461,11 @@ struct Spa2 {
463461 int * xs[2 ];
464462};
465463// 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]] {
467465// CHECK-A64-NEXT: [[ENTRY:.*:]]
468466// CHECK-A64-NEXT: [[S:%.*]] = alloca [[STRUCT_SPA2:%.*]], align 8
469467// 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
471469// CHECK-A64-NEXT: [[XS:%.*]] = getelementptr inbounds nuw [[STRUCT_SPA2]], ptr [[S]], i32 0, i32 0
472470// CHECK-A64-NEXT: [[ARRAYIDX:%.*]] = getelementptr inbounds [2 x ptr], ptr [[XS]], i64 0, i64 0
473471// CHECK-A64-NEXT: [[TMP0:%.*]] = load ptr, ptr [[ARRAYIDX]], align 8
@@ -523,10 +521,10 @@ struct __attribute__((aligned(16))) Spp_align16 {
523521 int *x, *y;
524522};
525523// 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]] {
527525// CHECK-A64-NEXT: [[ENTRY:.*:]]
528526// 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
530528// CHECK-A64-NEXT: [[X:%.*]] = getelementptr inbounds nuw [[STRUCT_SPP_ALIGN16]], ptr [[S]], i32 0, i32 0
531529// CHECK-A64-NEXT: [[TMP0:%.*]] = load ptr, ptr [[X]], align 16
532530// CHECK-A64-NEXT: store i32 1, ptr [[TMP0]], align 4
0 commit comments