Skip to content

Commit 3345b32

Browse files
authored
[CIR] Refactor cir.cast to use uniform assembly form w/o parens, commas (#1922)
The format now has the following assembly form: `$kind $src : type($src) -> type($result) attr-dict` This unifies CIR operation formats by removing unnecessary parentheses and using `->` consistently to denote result types.
1 parent 48a2570 commit 3345b32

File tree

177 files changed

+1920
-1921
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

177 files changed

+1920
-1921
lines changed

clang/include/clang/CIR/Dialect/IR/CIROps.td

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -225,18 +225,17 @@ def CIR_CastOp : CIR_Op<"cast",[
225225
Example:
226226

227227
```mlir
228-
%4 = cir.cast(int_to_bool, %3 : i32), !cir.bool
228+
%4 = cir.cast int_to_bool %3 : i32 -> !cir.bool
229229
...
230-
%x = cir.cast(array_to_ptrdecay, %0 : !cir.ptr<!cir.array<i32 x 10>>), !cir.ptr<i32>
230+
%x = cir.cast array_to_ptrdecay %0 : !cir.ptr<!cir.array<i32 x 10>> -> !cir.ptr<i32>
231231
```
232232
}];
233233

234234
let arguments = (ins CIR_CastKind:$kind, CIR_AnyType:$src);
235235
let results = (outs CIR_AnyType:$result);
236236

237237
let assemblyFormat = [{
238-
`(` $kind `,` $src `:` type($src) `)`
239-
`,` type($result) attr-dict
238+
$kind $src `:` type($src) `->` type($result) attr-dict
240239
}];
241240

242241
// The input and output types should match the cast kind.
@@ -4922,7 +4921,7 @@ def CIR_MemSetOp : CIR_Op<"libc.memset"> {
49224921
// Set 2 bytes from a record to 0:
49234922
%2 = cir.const #cir.int<2> : !u32i
49244923
%3 = cir.const #cir.int<0> : !u32i
4925-
%zero = cir.cast(integral, %3 : !s32i), !u8i
4924+
%zero = cir.cast integral %3 : !s32i -> !u8i
49264925
cir.libc.memset %2 bytes from %record set to %zero : !cir.ptr<!void>, !s32i, !u64i
49274926
```
49284927
}];
@@ -5446,7 +5445,7 @@ def CIR_FreeExceptionOp : CIR_Op<"free.exception"> {
54465445
%1 = cir.get_global @d2 : !cir.ptr<!some_record>
54475446
cir.try synthetic cleanup {
54485447
cir.call exception @_ZN7test2_DC1ERKS_(%0, %1) : (!cir.ptr<!some_record>, !cir.ptr<!some_record>) -> () cleanup {
5449-
%2 = cir.cast(bitcast, %0 : !cir.ptr<!some_record>), !cir.ptr<!void>
5448+
%2 = cir.cast bitcast %0 : !cir.ptr<!some_record> -> !cir.ptr<!void>
54505449
cir.free.exception %2
54515450
cir.yield
54525451
}
@@ -5865,7 +5864,7 @@ def CIR_GotoOp : CIR_Op<"goto", [Terminator]> {
58655864
```mlir
58665865
cir.scope { // REGION #1
58675866
%2 = cir.load %0 : !cir.ptr<!s32i>, !s32i
5868-
%3 = cir.cast(int_to_bool, %2 : !s32i), !cir.bool
5867+
%3 = cir.cast int_to_bool %2 : !s32i -> !cir.bool
58695868
cir.if %3 {
58705869
cir.goto "label"
58715870
}

clang/lib/CIR/Dialect/Transforms/SCFPrepare.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -120,7 +120,7 @@ struct canonicalizeIVtoCmpLHS : public OpRewritePattern<ForOp> {
120120
// %4 = cir.load %2 : !cir.ptr<!s32i>, !s32i
121121
// %5 = cir.const #cir.int<100> : !s32i <- upper bound
122122
// %6 = cir.cmp(lt, %4, %5) : !s32i, !s32i
123-
// %7 = cir.cast(int_to_bool, %6 : !s32i), !cir.bool
123+
// %7 = cir.cast int_to_bool %6 : !s32i -> !cir.bool
124124
// cir.condition(%7
125125
// } body {
126126
struct hoistLoopInvariantInCondBlock : public OpRewritePattern<ForOp> {

clang/lib/CIR/Lowering/DirectToLLVM/LowerToLLVM.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4916,7 +4916,7 @@ void buildCtorDtorList(
49164916
// For instance, the next CIR code:
49174917
//
49184918
// cir.func @foo(%arg0: !s32i) -> !s32i {
4919-
// %4 = cir.cast(int_to_bool, %arg0 : !s32i), !cir.bool
4919+
// %4 = cir.cast int_to_bool %arg0 : !s32i -> !cir.bool
49204920
// cir.if %4 {
49214921
// %5 = cir.const #cir.int<1> : !s32i
49224922
// cir.return %5 : !s32i

clang/lib/CIR/Lowering/ThroughMLIR/LowerCIRToMLIR.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1449,7 +1449,7 @@ class CIRPtrStrideOpLowering
14491449
}
14501450

14511451
// Rewrite
1452-
// %0 = cir.cast(array_to_ptrdecay, %base)
1452+
// %0 = cir.cast array_to_ptrdecay %base
14531453
// cir.ptr_stride(%0, %stride)
14541454
// to
14551455
// memref.reinterpret_cast (%base, %stride)

clang/test/CIR/CallConvLowering/AArch64/aarch64-cc-structs.c

Lines changed: 28 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ typedef struct {
2929

3030
// CHECK: cir.func {{.*@ret_lt_64}}() -> !u16i
3131
// CHECK: %[[#V0:]] = cir.alloca !rec_LT_64, !cir.ptr<!rec_LT_64>, ["__retval"]
32-
// CHECK: %[[#V1:]] = cir.cast(bitcast, %[[#V0]] : !cir.ptr<!rec_LT_64>), !cir.ptr<!u16i>
32+
// CHECK: %[[#V1:]] = cir.cast bitcast %[[#V0]] : !cir.ptr<!rec_LT_64> -> !cir.ptr<!u16i>
3333
// CHECK: %[[#V2:]] = cir.load{{.*}} %[[#V1]] : !cir.ptr<!u16i>, !u16i
3434
// CHECK: cir.return %[[#V2]] : !u16i
3535
LT_64 ret_lt_64() {
@@ -39,7 +39,7 @@ LT_64 ret_lt_64() {
3939

4040
// CHECK: cir.func {{.*@ret_eq_64}}() -> !u64i
4141
// CHECK: %[[#V0:]] = cir.alloca !rec_EQ_64, !cir.ptr<!rec_EQ_64>, ["__retval"]
42-
// CHECK: %[[#V1:]] = cir.cast(bitcast, %[[#V0]] : !cir.ptr<!rec_EQ_64>), !cir.ptr<!u64i>
42+
// CHECK: %[[#V1:]] = cir.cast bitcast %[[#V0]] : !cir.ptr<!rec_EQ_64> -> !cir.ptr<!u64i>
4343
// CHECK: %[[#V2:]] = cir.load{{.*}} %[[#V1]] : !cir.ptr<!u64i>, !u64i
4444
// CHECK: cir.return %[[#V2]] : !u64i
4545
EQ_64 ret_eq_64() {
@@ -49,7 +49,7 @@ EQ_64 ret_eq_64() {
4949

5050
// CHECK: cir.func {{.*@ret_lt_128}}() -> !cir.array<!u64i x 2>
5151
// CHECK: %[[#V0:]] = cir.alloca !rec_LT_128, !cir.ptr<!rec_LT_128>, ["__retval"]
52-
// CHECK: %[[#V1:]] = cir.cast(bitcast, %[[#V0]] : !cir.ptr<!rec_LT_128>), !cir.ptr<!cir.array<!u64i x 2>>
52+
// CHECK: %[[#V1:]] = cir.cast bitcast %[[#V0]] : !cir.ptr<!rec_LT_128> -> !cir.ptr<!cir.array<!u64i x 2>>
5353
// CHECK: %[[#V2:]] = cir.load{{.*}} %[[#V1]] : !cir.ptr<!cir.array<!u64i x 2>>, !cir.array<!u64i x 2>
5454
// CHECK: cir.return %[[#V2]] : !cir.array<!u64i x 2>
5555
LT_128 ret_lt_128() {
@@ -59,7 +59,7 @@ LT_128 ret_lt_128() {
5959

6060
// CHECK: cir.func {{.*@ret_eq_128}}() -> !cir.array<!u64i x 2>
6161
// CHECK: %[[#V0:]] = cir.alloca !rec_EQ_128, !cir.ptr<!rec_EQ_128>, ["__retval"]
62-
// CHECK: %[[#V1:]] = cir.cast(bitcast, %[[#V0]] : !cir.ptr<!rec_EQ_128>), !cir.ptr<!cir.array<!u64i x 2>>
62+
// CHECK: %[[#V1:]] = cir.cast bitcast %[[#V0]] : !cir.ptr<!rec_EQ_128> -> !cir.ptr<!cir.array<!u64i x 2>>
6363
// CHECK: %[[#V2:]] = cir.load{{.*}} %[[#V1]] : !cir.ptr<!cir.array<!u64i x 2>>, !cir.array<!u64i x 2>
6464
// CHECK: cir.return %[[#V2]] : !cir.array<!u64i x 2>
6565
EQ_128 ret_eq_128() {
@@ -83,8 +83,8 @@ typedef struct {
8383
// CHECK: cir.func {{.*@retS}}() -> !cir.array<!u64i x 2>
8484
// CHECK: %[[#V0:]] = cir.alloca !rec_S, !cir.ptr<!rec_S>, ["__retval"] {alignment = 4 : i64}
8585
// CHECK: %[[#V1:]] = cir.alloca !cir.array<!u64i x 2>, !cir.ptr<!cir.array<!u64i x 2>>, ["tmp"] {alignment = 8 : i64}
86-
// CHECK: %[[#V2:]] = cir.cast(bitcast, %[[#V0]] : !cir.ptr<!rec_S>), !cir.ptr<!void>
87-
// CHECK: %[[#V3:]] = cir.cast(bitcast, %[[#V1]] : !cir.ptr<!cir.array<!u64i x 2>>), !cir.ptr<!void>
86+
// CHECK: %[[#V2:]] = cir.cast bitcast %[[#V0]] : !cir.ptr<!rec_S> -> !cir.ptr<!void>
87+
// CHECK: %[[#V3:]] = cir.cast bitcast %[[#V1]] : !cir.ptr<!cir.array<!u64i x 2>> -> !cir.ptr<!void>
8888
// CHECK: %[[#V4:]] = cir.const #cir.int<12> : !u64i
8989
// CHECK: cir.libc.memcpy %[[#V4]] bytes from %[[#V2]] to %[[#V3]] : !u64i, !cir.ptr<!void> -> !cir.ptr<!void>
9090
// CHECK: %[[#V5:]] = cir.load{{.*}} %[[#V1]] : !cir.ptr<!cir.array<!u64i x 2>>, !cir.array<!u64i x 2>
@@ -102,8 +102,8 @@ S retS() {
102102
}
103103
// CHECK: cir.func {{.*@pass_lt_64}}(%arg0: !u64
104104
// CHECK: %[[#V0:]] = cir.alloca !rec_LT_64, !cir.ptr<!rec_LT_64>
105-
// CHECK: %[[#V1:]] = cir.cast(integral, %arg0 : !u64i), !u16i
106-
// CHECK: %[[#V2:]] = cir.cast(bitcast, %[[#V0]] : !cir.ptr<!rec_LT_64>), !cir.ptr<!u16i>
105+
// CHECK: %[[#V1:]] = cir.cast integral %arg0 : !u64i -> !u16i
106+
// CHECK: %[[#V2:]] = cir.cast bitcast %[[#V0]] : !cir.ptr<!rec_LT_64> -> !cir.ptr<!u16i>
107107
// CHECK: cir.store{{.*}} %[[#V1]], %[[#V2]] : !u16i, !cir.ptr<!u16i>
108108

109109
// LLVM: void @pass_lt_64(i64 %0)
@@ -114,7 +114,7 @@ void pass_lt_64(LT_64 s) {}
114114

115115
// CHECK: cir.func {{.*@pass_eq_64}}(%arg0: !u64i
116116
// CHECK: %[[#V0:]] = cir.alloca !rec_EQ_64, !cir.ptr<!rec_EQ_64>
117-
// CHECK: %[[#V1:]] = cir.cast(bitcast, %[[#V0]] : !cir.ptr<!rec_EQ_64>), !cir.ptr<!u64i>
117+
// CHECK: %[[#V1:]] = cir.cast bitcast %[[#V0]] : !cir.ptr<!rec_EQ_64> -> !cir.ptr<!u64i>
118118
// CHECK: cir.store{{.*}} %arg0, %[[#V1]] : !u64i, !cir.ptr<!u64i>
119119

120120
// LLVM: void @pass_eq_64(i64 %0)
@@ -124,7 +124,7 @@ void pass_eq_64(EQ_64 s) {}
124124

125125
// CHECK: cir.func {{.*@pass_lt_128}}(%arg0: !cir.array<!u64i x 2>
126126
// CHECK: %[[#V0:]] = cir.alloca !rec_LT_128, !cir.ptr<!rec_LT_128>
127-
// CHECK: %[[#V1:]] = cir.cast(bitcast, %[[#V0]] : !cir.ptr<!rec_LT_128>), !cir.ptr<!cir.array<!u64i x 2>>
127+
// CHECK: %[[#V1:]] = cir.cast bitcast %[[#V0]] : !cir.ptr<!rec_LT_128> -> !cir.ptr<!cir.array<!u64i x 2>>
128128
// CHECK: cir.store{{.*}} %arg0, %[[#V1]] : !cir.array<!u64i x 2>, !cir.ptr<!cir.array<!u64i x 2>>
129129

130130
// LLVM: void @pass_lt_128([2 x i64] %0)
@@ -134,7 +134,7 @@ void pass_lt_128(LT_128 s) {}
134134

135135
// CHECK: cir.func {{.*@pass_eq_128}}(%arg0: !cir.array<!u64i x 2>
136136
// CHECK: %[[#V0:]] = cir.alloca !rec_EQ_128, !cir.ptr<!rec_EQ_128>
137-
// CHECK: %[[#V1:]] = cir.cast(bitcast, %[[#V0]] : !cir.ptr<!rec_EQ_128>), !cir.ptr<!cir.array<!u64i x 2>>
137+
// CHECK: %[[#V1:]] = cir.cast bitcast %[[#V0]] : !cir.ptr<!rec_EQ_128> -> !cir.ptr<!cir.array<!u64i x 2>>
138138
// CHECK: cir.store{{.*}} %arg0, %[[#V1]] : !cir.array<!u64i x 2>, !cir.ptr<!cir.array<!u64i x 2>>
139139

140140
// LLVM: void @pass_eq_128([2 x i64] %0)
@@ -175,8 +175,8 @@ GT_128 get_gt_128(GT_128 s) {
175175
// CHECK: %[[#V1:]] = cir.load{{.*}} %arg0 : !cir.ptr<!rec_GT_128>, !rec_GT_128
176176
// CHECK: %[[#V2:]] = cir.alloca !rec_GT_128, !cir.ptr<!rec_GT_128>, [""] {alignment = 8 : i64}
177177
// CHECK: %[[#V3:]] = cir.alloca !rec_GT_128, !cir.ptr<!rec_GT_128>, ["tmp"] {alignment = 8 : i64}
178-
// CHECK: %[[#V4:]] = cir.cast(bitcast, %arg0 : !cir.ptr<!rec_GT_128>), !cir.ptr<!void>
179-
// CHECK: %[[#V5:]] = cir.cast(bitcast, %[[#V3]] : !cir.ptr<!rec_GT_128>), !cir.ptr<!void>
178+
// CHECK: %[[#V4:]] = cir.cast bitcast %arg0 : !cir.ptr<!rec_GT_128> -> !cir.ptr<!void>
179+
// CHECK: %[[#V5:]] = cir.cast bitcast %[[#V3]] : !cir.ptr<!rec_GT_128> -> !cir.ptr<!void>
180180
// CHECK: %[[#V6:]] = cir.const #cir.int<24> : !u64i
181181
// CHECK: cir.libc.memcpy %[[#V6]] bytes from %[[#V4]] to %[[#V5]] : !u64i, !cir.ptr<!void> -> !cir.ptr<!void>
182182
// CHECK: cir.call @get_gt_128(%[[#V2]], %[[#V3]]) : (!cir.ptr<!rec_GT_128>, !cir.ptr<!rec_GT_128>) -> ()
@@ -198,8 +198,8 @@ GT_128 call_and_get_gt_128() {
198198
// CHECK: %[[#V0:]] = cir.alloca !rec_S, !cir.ptr<!rec_S>, [""] {alignment = 4 : i64}
199199
// CHECK: %[[#V1:]] = cir.alloca !cir.array<!u64i x 2>, !cir.ptr<!cir.array<!u64i x 2>>, ["tmp"] {alignment = 8 : i64}
200200
// CHECK: cir.store{{.*}} %arg0, %[[#V1]] : !cir.array<!u64i x 2>, !cir.ptr<!cir.array<!u64i x 2>>
201-
// CHECK: %[[#V2:]] = cir.cast(bitcast, %[[#V1]] : !cir.ptr<!cir.array<!u64i x 2>>), !cir.ptr<!void>
202-
// CHECK: %[[#V3:]] = cir.cast(bitcast, %[[#V0]] : !cir.ptr<!rec_S>), !cir.ptr<!void>
201+
// CHECK: %[[#V2:]] = cir.cast bitcast %[[#V1]] : !cir.ptr<!cir.array<!u64i x 2>> -> !cir.ptr<!void>
202+
// CHECK: %[[#V3:]] = cir.cast bitcast %[[#V0]] : !cir.ptr<!rec_S> -> !cir.ptr<!void>
203203
// CHECK: %[[#V4:]] = cir.const #cir.int<12> : !u64i
204204
// CHECK: cir.libc.memcpy %[[#V4]] bytes from %[[#V2]] to %[[#V3]] : !u64i, !cir.ptr<!void> -> !cir.ptr<!void>
205205

@@ -214,8 +214,8 @@ void passS(S s) {}
214214
// CHECK: %[[#V0:]] = cir.alloca !rec_S, !cir.ptr<!rec_S>, ["s"] {alignment = 4 : i64}
215215
// CHECK: %[[#V1:]] = cir.alloca !cir.array<!u64i x 2>, !cir.ptr<!cir.array<!u64i x 2>>, ["tmp"] {alignment = 8 : i64}
216216
// CHECK: %[[#V2:]] = cir.load{{.*}} %[[#V0]] : !cir.ptr<!rec_S>, !rec_S
217-
// CHECK: %[[#V3:]] = cir.cast(bitcast, %[[#V0]] : !cir.ptr<!rec_S>), !cir.ptr<!void>
218-
// CHECK: %[[#V4:]] = cir.cast(bitcast, %[[#V1]] : !cir.ptr<!cir.array<!u64i x 2>>), !cir.ptr<!void>
217+
// CHECK: %[[#V3:]] = cir.cast bitcast %[[#V0]] : !cir.ptr<!rec_S> -> !cir.ptr<!void>
218+
// CHECK: %[[#V4:]] = cir.cast bitcast %[[#V1]] : !cir.ptr<!cir.array<!u64i x 2>> -> !cir.ptr<!void>
219219
// CHECK: %[[#V5:]] = cir.const #cir.int<12> : !u64i
220220
// CHECK: cir.libc.memcpy %[[#V5]] bytes from %[[#V3]] to %[[#V4]] : !u64i, !cir.ptr<!void> -> !cir.ptr<!void>
221221
// CHECK: %[[#V6:]] = cir.load{{.*}} %[[#V1]] : !cir.ptr<!cir.array<!u64i x 2>>, !cir.array<!u64i x 2>
@@ -245,8 +245,8 @@ typedef struct {
245245
// CHECK: %[[#V0:]] = cir.alloca !rec_S_PAD, !cir.ptr<!rec_S_PAD>, ["__retval"] {alignment = 2 : i64}
246246
// CHECK: %[[#V1:]] = cir.load{{.*}} %[[#V0]] : !cir.ptr<!rec_S_PAD>, !rec_S_PAD
247247
// CHECK: %[[#V2:]] = cir.alloca !u48i, !cir.ptr<!u48i>, [""] {alignment = 2 : i64}
248-
// CHECK: %[[#V3:]] = cir.cast(bitcast, %[[#V0]] : !cir.ptr<!rec_S_PAD>)
249-
// CHECK: %[[#V4:]] = cir.cast(bitcast, %[[#V2:]] : !cir.ptr<!u48i>), !cir.ptr<!void>
248+
// CHECK: %[[#V3:]] = cir.cast bitcast %[[#V0]] : !cir.ptr<!rec_S_PAD>
249+
// CHECK: %[[#V4:]] = cir.cast bitcast %[[#V2:]] : !cir.ptr<!u48i> -> !cir.ptr<!void>
250250
// CHECK: %[[#V5:]] = cir.const #cir.int<6> : !u64i
251251
// CHECK: cir.libc.memcpy %[[#V5]] bytes from %[[#V3]] to %[[#V4]] : !u64i, !cir.ptr<!void>
252252
// CHECK: %[[#V6:]] = cir.load{{.*}} %[[#V2]] : !cir.ptr<!u48i>
@@ -292,8 +292,8 @@ typedef struct {
292292

293293
// CHECK: cir.func dso_local @pass_nested_u(%arg0: !u64i
294294
// CHECK: %[[#V0:]] = cir.alloca !rec_NESTED_U, !cir.ptr<!rec_NESTED_U>, [""] {alignment = 4 : i64}
295-
// CHECK: %[[#V1:]] = cir.cast(integral, %arg0 : !u64i), !u16i
296-
// CHECK: %[[#V2:]] = cir.cast(bitcast, %[[#V0]] : !cir.ptr<!rec_NESTED_U>
295+
// CHECK: %[[#V1:]] = cir.cast integral %arg0 : !u64i -> !u16i
296+
// CHECK: %[[#V2:]] = cir.cast bitcast %[[#V0]] : !cir.ptr<!rec_NESTED_U>
297297
// CHECK: cir.store{{.*}} %[[#V1]], %[[#V2]] : !u16i
298298
// CHECK: cir.return
299299

@@ -308,12 +308,12 @@ void pass_nested_u(NESTED_U a) {}
308308
// CHECK: %[[#V0:]] = cir.alloca !rec_NESTED_U, !cir.ptr<!rec_NESTED_U>
309309
// CHECK: %[[#V1:]] = cir.alloca !u64i, !cir.ptr<!u64i>, ["tmp"]
310310
// CHECK: %[[#V2:]] = cir.load{{.*}} %[[#V0]] : !cir.ptr<!rec_NESTED_U>, !rec_NESTED_U
311-
// CHECK: %[[#V3:]] = cir.cast(bitcast, %[[#V0]] : !cir.ptr<!rec_NESTED_U>), !cir.ptr<!rec_anon2E0>
311+
// CHECK: %[[#V3:]] = cir.cast bitcast %[[#V0]] : !cir.ptr<!rec_NESTED_U> -> !cir.ptr<!rec_anon2E0>
312312
// CHECK: %[[#V4:]] = cir.load{{.*}} %[[#V3]] : !cir.ptr<!rec_anon2E0>, !rec_anon2E0
313-
// CHECK: %[[#V5:]] = cir.cast(bitcast, %[[#V3]] : !cir.ptr<!rec_anon2E0>), !cir.ptr<!rec_anon2E1>
313+
// CHECK: %[[#V5:]] = cir.cast bitcast %[[#V3]] : !cir.ptr<!rec_anon2E0> -> !cir.ptr<!rec_anon2E1>
314314
// CHECK: %[[#V6:]] = cir.load{{.*}} %[[#V5]] : !cir.ptr<!rec_anon2E1>, !rec_anon2E1
315-
// CHECK: %[[#V7:]] = cir.cast(bitcast, %[[#V5]] : !cir.ptr<!rec_anon2E1>), !cir.ptr<!void>
316-
// CHECK: %[[#V8:]] = cir.cast(bitcast, %[[#V1]] : !cir.ptr<!u64i>), !cir.ptr<!void>
315+
// CHECK: %[[#V7:]] = cir.cast bitcast %[[#V5]] : !cir.ptr<!rec_anon2E1> -> !cir.ptr<!void>
316+
// CHECK: %[[#V8:]] = cir.cast bitcast %[[#V1]] : !cir.ptr<!u64i> -> !cir.ptr<!void>
317317
// CHECK: %[[#V9:]] = cir.const #cir.int<2> : !u64i
318318
// CHECK: cir.libc.memcpy %[[#V9]] bytes from %[[#V7]] to %[[#V8]] : !u64i, !cir.ptr<!void> -> !cir.ptr<!void>
319319
// CHECK: %[[#V10:]] = cir.load{{.*}} %[[#V1]] : !cir.ptr<!u64i>, !u64i
@@ -360,8 +360,8 @@ void bar(void) {
360360
// CHECK: %[[#V1:]] = cir.alloca !cir.array<!u64i x 2>, !cir.ptr<!cir.array<!u64i x 2>>, ["tmp"]
361361
// CHECK: %[[#V2:]] = cir.call @foo() : () -> !cir.array<!u64i x 2>
362362
// CHECK: cir.store{{.*}} %[[#V2]], %[[#V1]] : !cir.array<!u64i x 2>, !cir.ptr<!cir.array<!u64i x 2>>
363-
// CHECK: %[[#V3:]] = cir.cast(bitcast, %[[#V1]] : !cir.ptr<!cir.array<!u64i x 2>>), !cir.ptr<!void>
364-
// CHECK: %[[#V4:]] = cir.cast(bitcast, %[[#V0]] : !cir.ptr<!rec_PackedS1>), !cir.ptr<!void>
363+
// CHECK: %[[#V3:]] = cir.cast bitcast %[[#V1]] : !cir.ptr<!cir.array<!u64i x 2>> -> !cir.ptr<!void>
364+
// CHECK: %[[#V4:]] = cir.cast bitcast %[[#V0]] : !cir.ptr<!rec_PackedS1> -> !cir.ptr<!void>
365365
// CHECK: %[[#V5:]] = cir.const #cir.int<14> : !u64i
366366
// CHECK: cir.libc.memcpy %[[#V5]] bytes from %[[#V3]] to %[[#V4]] : !u64i, !cir.ptr<!void> -> !cir.ptr<!void>
367367

@@ -402,7 +402,7 @@ void qux(void) {
402402
// CHECK: %[[#V5:]] = cir.get_element %[[#V2]][%[[#V3]]] : (!cir.ptr<!cir.array<!rec_PackedS2 x 3>>, !s32i) -> !cir.ptr<!rec_PackedS2>
403403
// CHECK: cir.store{{.*}} %[[#V5]], %[[#V0]] : !cir.ptr<!rec_PackedS2>, !cir.ptr<!cir.ptr<!rec_PackedS2>>
404404
// CHECK: %[[#V6:]] = cir.load deref{{.*}} %[[#V0]] : !cir.ptr<!cir.ptr<!rec_PackedS2>>, !cir.ptr<!rec_PackedS2>
405-
// CHECK: %[[#V7:]] = cir.cast(bitcast, %[[#V6]] : !cir.ptr<!rec_PackedS2>), !cir.ptr<!void>
405+
// CHECK: %[[#V7:]] = cir.cast bitcast %[[#V6]] : !cir.ptr<!rec_PackedS2> -> !cir.ptr<!void>
406406
// CHECK: %[[#V8:]] = cir.const #cir.int<6> : !u64i
407407
// CHECK: cir.libc.memcpy %[[#V8]] bytes from %[[#V7]]
408408

clang/test/CIR/CallConvLowering/AArch64/aarch64_be-cc-structs.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ typedef struct {
88

99
// CHECK: cir.func {{.*@init}}() -> !u64i
1010
// CHECK: %[[#V0:]] = cir.alloca !rec_S, !cir.ptr<!rec_S>, ["__retval"] {alignment = 4 : i64}
11-
// CHECK: %[[#V1:]] = cir.cast(bitcast, %[[#V0]] : !cir.ptr<!rec_S>), !cir.ptr<!u64i>
11+
// CHECK: %[[#V1:]] = cir.cast bitcast %[[#V0]] : !cir.ptr<!rec_S> -> !cir.ptr<!u64i>
1212
// CHECK: %[[#V2:]] = cir.load %[[#V1]] : !cir.ptr<!u64i>, !u64i
1313
// CHECK: cir.return %[[#V2]] : !u64i
1414
S init() {

clang/test/CIR/CallConvLowering/AArch64/ptr-fields.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ int foo(int x) { return x; }
1313

1414
// CIR: cir.func dso_local @passA(%arg0: !u64i
1515
// CIR: %[[#V0:]] = cir.alloca !rec_A, !cir.ptr<!rec_A>, [""] {alignment = 4 : i64}
16-
// CIR: %[[#V1:]] = cir.cast(bitcast, %[[#V0]] : !cir.ptr<!rec_A>), !cir.ptr<!u64i>
16+
// CIR: %[[#V1:]] = cir.cast bitcast %[[#V0]] : !cir.ptr<!rec_A> -> !cir.ptr<!u64i>
1717
// CIR: cir.store{{.*}} %arg0, %[[#V1]] : !u64i, !cir.ptr<!u64i>
1818
// CIR: %[[#V2:]] = cir.get_global @foo : !cir.ptr<!cir.func<(!s32i) -> !s32i>>
1919
// CIR: %[[#V3:]] = cir.get_member %[[#V0]][0] {name = "f"} : !cir.ptr<!rec_A> -> !cir.ptr<!cir.ptr<!cir.func<(!s32i) -> !s32i>>>
@@ -38,7 +38,7 @@ typedef struct {
3838

3939
// CIR: cir.func dso_local @passB(%arg0: !u64i
4040
// CIR: %[[#V0:]] = cir.alloca !rec_S_2, !cir.ptr<!rec_S_2>, [""] {alignment = 4 : i64}
41-
// CIR: %[[#V1:]] = cir.cast(bitcast, %[[#V0]] : !cir.ptr<!rec_S_2>), !cir.ptr<!u64i>
41+
// CIR: %[[#V1:]] = cir.cast bitcast %[[#V0]] : !cir.ptr<!rec_S_2> -> !cir.ptr<!u64i>
4242
// CIR: cir.store{{.*}} %arg0, %[[#V1]] : !u64i, !cir.ptr<!u64i>
4343
// CIR: cir.return
4444

0 commit comments

Comments
 (0)