Skip to content

Commit 7871276

Browse files
committed
[CIR] Upstream support for type aliases
CIR uses aliases for standard integer types and void. This change adds upstream support for those aliases and updates existing tests.
1 parent 14c95e0 commit 7871276

File tree

17 files changed

+323
-285
lines changed

17 files changed

+323
-285
lines changed

clang/lib/CIR/Dialect/IR/CIRDialect.cpp

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,20 @@ struct CIROpAsmDialectInterface : public OpAsmDialectInterface {
3131
using OpAsmDialectInterface::OpAsmDialectInterface;
3232

3333
AliasResult getAlias(Type type, raw_ostream &os) const final {
34+
if (auto intType = dyn_cast<cir::IntType>(type)) {
35+
// We only provide alias for standard integer types (i.e. integer types
36+
// whose width is a power of 2 and at least 8).
37+
unsigned width = intType.getWidth();
38+
if (width < 8 || !llvm::isPowerOf2_32(width))
39+
return AliasResult::NoAlias;
40+
os << intType.getAlias();
41+
return AliasResult::OverridableAlias;
42+
}
43+
if (auto voidType = dyn_cast<cir::VoidType>(type)) {
44+
os << voidType.getAlias();
45+
return AliasResult::OverridableAlias;
46+
}
47+
3448
return AliasResult::NoAlias;
3549
}
3650

clang/test/CIR/CodeGen/array.cpp

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,26 @@
11
// RUN: %clang_cc1 -std=c++20 -triple x86_64-unknown-linux-gnu -fclangir -emit-cir %s -o - 2>&1 | FileCheck %s
22

33
int a[10];
4-
// CHECK: cir.global external @a : !cir.array<!cir.int<s, 32> x 10>
4+
// CHECK: cir.global external @a : !cir.array<!s32i x 10>
55

66
int aa[10][5];
7-
// CHECK: cir.global external @aa : !cir.array<!cir.array<!cir.int<s, 32> x 5> x 10>
7+
// CHECK: cir.global external @aa : !cir.array<!cir.array<!s32i x 5> x 10>
88

99
extern int b[10];
10-
// CHECK: cir.global external @b : !cir.array<!cir.int<s, 32> x 10>
10+
// CHECK: cir.global external @b : !cir.array<!s32i x 10>
1111

1212
extern int bb[10][5];
13-
// CHECK: cir.global external @bb : !cir.array<!cir.array<!cir.int<s, 32> x 5> x 10>
13+
// CHECK: cir.global external @bb : !cir.array<!cir.array<!s32i x 5> x 10>
1414

1515
void f() {
1616
int l[10];
17-
// CHECK: %[[ARR:.*]] = cir.alloca !cir.array<!cir.int<s, 32> x 10>, !cir.ptr<!cir.array<!cir.int<s, 32> x 10>>, ["l"]
17+
// CHECK: %[[ARR:.*]] = cir.alloca !cir.array<!s32i x 10>, !cir.ptr<!cir.array<!s32i x 10>>, ["l"]
1818
}
1919

2020
void f2(int p[10]) {}
21-
// CHECK: cir.func @f2(%arg0: !cir.ptr<!cir.int<s, 32>>
22-
// CHECK: cir.alloca !cir.ptr<!cir.int<s, 32>>, !cir.ptr<!cir.ptr<!cir.int<s, 32>>>, ["p", init]
21+
// CHECK: cir.func @f2(%arg0: !cir.ptr<!s32i>
22+
// CHECK: cir.alloca !cir.ptr<!s32i>, !cir.ptr<!cir.ptr<!s32i>>, ["p", init]
2323

2424
void f3(int pp[10][5]) {}
25-
// CHECK: cir.func @f3(%arg0: !cir.ptr<!cir.array<!cir.int<s, 32> x 5>>
26-
// CHECK: cir.alloca !cir.ptr<!cir.array<!cir.int<s, 32> x 5>>, !cir.ptr<!cir.ptr<!cir.array<!cir.int<s, 32> x 5>>>
25+
// CHECK: cir.func @f3(%arg0: !cir.ptr<!cir.array<!s32i x 5>>
26+
// CHECK: cir.alloca !cir.ptr<!cir.array<!s32i x 5>>, !cir.ptr<!cir.ptr<!cir.array<!s32i x 5>>>

clang/test/CIR/CodeGen/basic.c

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -13,12 +13,12 @@ int f1(int i) {
1313
}
1414

1515
// CIR: module
16-
// CIR-NEXT: cir.func @f1(%arg0: !cir.int<s, 32> loc({{.*}})) -> !cir.int<s, 32>
17-
// CIR-NEXT: %[[I_PTR:.*]] = cir.alloca !cir.int<s, 32>, !cir.ptr<!cir.int<s, 32>>, ["i", init] {alignment = 4 : i64}
18-
// CIR-NEXT: cir.store %arg0, %[[I_PTR]] : !cir.int<s, 32>, !cir.ptr<!cir.int<s, 32>>
19-
// CIR-NEXT: %[[I_IGNORED:.*]] = cir.load %[[I_PTR]] : !cir.ptr<!cir.int<s, 32>>, !cir.int<s, 32>
20-
// CIR-NEXT: %[[I:.*]] = cir.load %[[I_PTR]] : !cir.ptr<!cir.int<s, 32>>, !cir.int<s, 32>
21-
// CIR-NEXT: cir.return %[[I]] : !cir.int<s, 32>
16+
// CIR-NEXT: cir.func @f1(%arg0: !s32i loc({{.*}})) -> !s32i
17+
// CIR-NEXT: %[[I_PTR:.*]] = cir.alloca !s32i, !cir.ptr<!s32i>, ["i", init] {alignment = 4 : i64}
18+
// CIR-NEXT: cir.store %arg0, %[[I_PTR]] : !s32i, !cir.ptr<!s32i>
19+
// CIR-NEXT: %[[I_IGNORED:.*]] = cir.load %[[I_PTR]] : !cir.ptr<!s32i>, !s32i
20+
// CIR-NEXT: %[[I:.*]] = cir.load %[[I_PTR]] : !cir.ptr<!s32i>, !s32i
21+
// CIR-NEXT: cir.return %[[I]] : !s32i
2222

2323
// LLVM: define i32 @f1(i32 %[[I:.*]])
2424
// LLVM-NEXT: %[[I_PTR:.*]] = alloca i32, i64 1, align 4
@@ -37,9 +37,9 @@ int f1(int i) {
3737

3838
int f2(void) { return 3; }
3939

40-
// CIR: cir.func @f2() -> !cir.int<s, 32>
41-
// CIR-NEXT: %[[THREE:.*]] = cir.const #cir.int<3> : !cir.int<s, 32>
42-
// CIR-NEXT: cir.return %[[THREE]] : !cir.int<s, 32>
40+
// CIR: cir.func @f2() -> !s32i
41+
// CIR-NEXT: %[[THREE:.*]] = cir.const #cir.int<3> : !s32i
42+
// CIR-NEXT: cir.return %[[THREE]] : !s32i
4343

4444
// LLVM: define i32 @f2()
4545
// LLVM-NEXT: ret i32 3
@@ -53,12 +53,12 @@ int f3(void) {
5353
return i;
5454
}
5555

56-
// CIR: cir.func @f3() -> !cir.int<s, 32>
57-
// CIR-NEXT: %[[I_PTR:.*]] = cir.alloca !cir.int<s, 32>, !cir.ptr<!cir.int<s, 32>>, ["i", init] {alignment = 4 : i64}
58-
// CIR-NEXT: %[[THREE:.*]] = cir.const #cir.int<3> : !cir.int<s, 32>
59-
// CIR-NEXT: cir.store %[[THREE]], %[[I_PTR]] : !cir.int<s, 32>, !cir.ptr<!cir.int<s, 32>>
60-
// CIR-NEXT: %[[I:.*]] = cir.load %[[I_PTR]] : !cir.ptr<!cir.int<s, 32>>, !cir.int<s, 32>
61-
// CIR-NEXT: cir.return %[[I]] : !cir.int<s, 32>
56+
// CIR: cir.func @f3() -> !s32i
57+
// CIR-NEXT: %[[I_PTR:.*]] = cir.alloca !s32i, !cir.ptr<!s32i>, ["i", init] {alignment = 4 : i64}
58+
// CIR-NEXT: %[[THREE:.*]] = cir.const #cir.int<3> : !s32i
59+
// CIR-NEXT: cir.store %[[THREE]], %[[I_PTR]] : !s32i, !cir.ptr<!s32i>
60+
// CIR-NEXT: %[[I:.*]] = cir.load %[[I_PTR]] : !cir.ptr<!s32i>, !s32i
61+
// CIR-NEXT: cir.return %[[I]] : !s32i
6262

6363
// LLVM: define i32 @f3()
6464
// LLVM-NEXT: %[[I_PTR:.*]] = alloca i32, i64 1, align 4

clang/test/CIR/CodeGen/basic.cpp

Lines changed: 20 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -6,39 +6,39 @@ int f1() {
66
}
77

88
// CHECK: module
9-
// CHECK: cir.func @f1() -> !cir.int<s, 32>
10-
// CHECK: %[[I_PTR:.*]] = cir.alloca !cir.int<s, 32>, !cir.ptr<!cir.int<s, 32>>, ["i"] {alignment = 4 : i64}
11-
// CHECK: %[[I:.*]] = cir.load %[[I_PTR]] : !cir.ptr<!cir.int<s, 32>>, !cir.int<s, 32>
12-
// CHECK: cir.return %[[I]] : !cir.int<s, 32>
9+
// CHECK: cir.func @f1() -> !s32i
10+
// CHECK: %[[I_PTR:.*]] = cir.alloca !s32i, !cir.ptr<!s32i>, ["i"] {alignment = 4 : i64}
11+
// CHECK: %[[I:.*]] = cir.load %[[I_PTR]] : !cir.ptr<!s32i>, !s32i
12+
// CHECK: cir.return %[[I]] : !s32i
1313

1414
int f2() {
1515
const int i = 2;
1616
return i;
1717
}
1818

19-
// CHECK: cir.func @f2() -> !cir.int<s, 32>
20-
// CHECK: %[[I_PTR:.*]] = cir.alloca !cir.int<s, 32>, !cir.ptr<!cir.int<s, 32>>, ["i", init, const] {alignment = 4 : i64}
21-
// CHECK: %[[TWO:.*]] = cir.const #cir.int<2> : !cir.int<s, 32>
22-
// CHECK: cir.store %[[TWO]], %[[I_PTR]] : !cir.int<s, 32>, !cir.ptr<!cir.int<s, 32>>
23-
// CHECK: %[[I:.*]] = cir.load %[[I_PTR]] : !cir.ptr<!cir.int<s, 32>>, !cir.int<s, 32>
24-
// CHECK: cir.return %[[I]] : !cir.int<s, 32>
19+
// CHECK: cir.func @f2() -> !s32i
20+
// CHECK: %[[I_PTR:.*]] = cir.alloca !s32i, !cir.ptr<!s32i>, ["i", init, const] {alignment = 4 : i64}
21+
// CHECK: %[[TWO:.*]] = cir.const #cir.int<2> : !s32i
22+
// CHECK: cir.store %[[TWO]], %[[I_PTR]] : !s32i, !cir.ptr<!s32i>
23+
// CHECK: %[[I:.*]] = cir.load %[[I_PTR]] : !cir.ptr<!s32i>, !s32i
24+
// CHECK: cir.return %[[I]] : !s32i
2525

2626
int f3(int i) {
2727
return i;
2828
}
2929

30-
// CHECK: cir.func @f3(%[[ARG:.*]]: !cir.int<s, 32> loc({{.*}})) -> !cir.int<s, 32>
31-
// CHECK: %[[ARG_ALLOCA:.*]] = cir.alloca !cir.int<s, 32>, !cir.ptr<!cir.int<s, 32>>, ["i", init] {alignment = 4 : i64}
32-
// CHECK: cir.store %[[ARG]], %[[ARG_ALLOCA]] : !cir.int<s, 32>, !cir.ptr<!cir.int<s, 32>>
33-
// CHECK: %[[ARG_VAL:.*]] = cir.load %[[ARG_ALLOCA]] : !cir.ptr<!cir.int<s, 32>>, !cir.int<s, 32>
34-
// CHECK: cir.return %[[ARG_VAL]] : !cir.int<s, 32>
30+
// CHECK: cir.func @f3(%[[ARG:.*]]: !s32i loc({{.*}})) -> !s32i
31+
// CHECK: %[[ARG_ALLOCA:.*]] = cir.alloca !s32i, !cir.ptr<!s32i>, ["i", init] {alignment = 4 : i64}
32+
// CHECK: cir.store %[[ARG]], %[[ARG_ALLOCA]] : !s32i, !cir.ptr<!s32i>
33+
// CHECK: %[[ARG_VAL:.*]] = cir.load %[[ARG_ALLOCA]] : !cir.ptr<!s32i>, !s32i
34+
// CHECK: cir.return %[[ARG_VAL]] : !s32i
3535

3636
int f4(const int i) {
3737
return i;
3838
}
3939

40-
// CHECK: cir.func @f4(%[[ARG:.*]]: !cir.int<s, 32> loc({{.*}})) -> !cir.int<s, 32>
41-
// CHECK: %[[ARG_ALLOCA:.*]] = cir.alloca !cir.int<s, 32>, !cir.ptr<!cir.int<s, 32>>, ["i", init, const] {alignment = 4 : i64}
42-
// CHECK: cir.store %[[ARG]], %[[ARG_ALLOCA]] : !cir.int<s, 32>, !cir.ptr<!cir.int<s, 32>>
43-
// CHECK: %[[ARG_VAL:.*]] = cir.load %[[ARG_ALLOCA]] : !cir.ptr<!cir.int<s, 32>>, !cir.int<s, 32>
44-
// CHECK: cir.return %[[ARG_VAL]] : !cir.int<s, 32>
40+
// CHECK: cir.func @f4(%[[ARG:.*]]: !s32i loc({{.*}})) -> !s32i
41+
// CHECK: %[[ARG_ALLOCA:.*]] = cir.alloca !s32i, !cir.ptr<!s32i>, ["i", init, const] {alignment = 4 : i64}
42+
// CHECK: cir.store %[[ARG]], %[[ARG_ALLOCA]] : !s32i, !cir.ptr<!s32i>
43+
// CHECK: %[[ARG_VAL:.*]] = cir.load %[[ARG_ALLOCA]] : !cir.ptr<!s32i>, !s32i
44+
// CHECK: cir.return %[[ARG_VAL]] : !s32i

clang/test/CIR/CodeGen/cast.cpp

Lines changed: 18 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,11 @@ unsigned char cxxstaticcast_0(unsigned int x) {
88
}
99

1010
// CIR: cir.func @cxxstaticcast_0
11-
// CIR: %[[XPTR:[0-9]+]] = cir.alloca !cir.int<u, 32>, !cir.ptr<!cir.int<u, 32>>, ["x", init] {alignment = 4 : i64}
12-
// CIR: cir.store %arg0, %[[XPTR]] : !cir.int<u, 32>, !cir.ptr<!cir.int<u, 32>>
13-
// CIR: %[[XVAL:[0-9]+]] = cir.load %[[XPTR]] : !cir.ptr<!cir.int<u, 32>>, !cir.int<u, 32>
14-
// CIR: %[[CASTED:[0-9]+]] = cir.cast(integral, %[[XVAL]] : !cir.int<u, 32>), !cir.int<u, 8>
15-
// CIR: cir.return %[[CASTED]] : !cir.int<u, 8>
11+
// CIR: %[[XPTR:[0-9]+]] = cir.alloca !u32i, !cir.ptr<!u32i>, ["x", init] {alignment = 4 : i64}
12+
// CIR: cir.store %arg0, %[[XPTR]] : !u32i, !cir.ptr<!u32i>
13+
// CIR: %[[XVAL:[0-9]+]] = cir.load %[[XPTR]] : !cir.ptr<!u32i>, !u32i
14+
// CIR: %[[CASTED:[0-9]+]] = cir.cast(integral, %[[XVAL]] : !u32i), !u8i
15+
// CIR: cir.return %[[CASTED]] : !u8i
1616
// CIR: }
1717

1818
// LLVM: define i8 @cxxstaticcast_0(i32 %{{[0-9]+}})
@@ -26,41 +26,41 @@ int cStyleCasts_0(unsigned x1, int x2, float x3, short x4, double x5) {
2626
// LLVM: define i32 @cStyleCasts_0
2727

2828
char a = (char)x1; // truncate
29-
// CIR: %{{[0-9]+}} = cir.cast(integral, %{{[0-9]+}} : !cir.int<u, 32>), !cir.int<s, 8>
29+
// CIR: %{{[0-9]+}} = cir.cast(integral, %{{[0-9]+}} : !u32i), !s8i
3030
// LLVM: %{{[0-9]+}} = trunc i32 %{{[0-9]+}} to i8
3131

3232
short b = (short)x2; // truncate with sign
33-
// CIR: %{{[0-9]+}} = cir.cast(integral, %{{[0-9]+}} : !cir.int<s, 32>), !cir.int<s, 16>
33+
// CIR: %{{[0-9]+}} = cir.cast(integral, %{{[0-9]+}} : !s32i), !s16i
3434
// LLVM: %{{[0-9]+}} = trunc i32 %{{[0-9]+}} to i16
3535

3636
long long c = (long long)x1; // zero extend
37-
// CIR: %{{[0-9]+}} = cir.cast(integral, %{{[0-9]+}} : !cir.int<u, 32>), !cir.int<s, 64>
37+
// CIR: %{{[0-9]+}} = cir.cast(integral, %{{[0-9]+}} : !u32i), !s64i
3838
// LLVM: %{{[0-9]+}} = zext i32 %{{[0-9]+}} to i64
3939

4040
long long d = (long long)x2; // sign extend
41-
// CIR: %{{[0-9]+}} = cir.cast(integral, %{{[0-9]+}} : !cir.int<s, 32>), !cir.int<s, 64>
41+
// CIR: %{{[0-9]+}} = cir.cast(integral, %{{[0-9]+}} : !s32i), !s64i
4242
// LLVM: %{{[0-9]+}} = sext i32 %{{[0-9]+}} to i64
4343

4444
unsigned ui = (unsigned)x2; // sign drop
45-
// CIR: %{{[0-9]+}} = cir.cast(integral, %{{[0-9]+}} : !cir.int<s, 32>), !cir.int<u, 32>
45+
// CIR: %{{[0-9]+}} = cir.cast(integral, %{{[0-9]+}} : !s32i), !u32i
4646

4747
int si = (int)x1; // sign add
48-
// CIR: %{{[0-9]+}} = cir.cast(integral, %{{[0-9]+}} : !cir.int<u, 32>), !cir.int<s, 32>
48+
// CIR: %{{[0-9]+}} = cir.cast(integral, %{{[0-9]+}} : !u32i), !s32i
4949

5050
bool ib;
5151
int bi = (int)ib; // bool to int
52-
// CIR: %{{[0-9]+}} = cir.cast(bool_to_int, %{{[0-9]+}} : !cir.bool), !cir.int<s, 32>
52+
// CIR: %{{[0-9]+}} = cir.cast(bool_to_int, %{{[0-9]+}} : !cir.bool), !s32i
5353
// LLVM: %{{[0-9]+}} = zext i1 %{{[0-9]+}} to i32
5454

5555
#ifdef CIR_ONLY
5656
bool b2 = x2; // int to bool
57-
// CIR: %{{[0-9]+}} = cir.cast(int_to_bool, %{{[0-9]+}} : !cir.int<s, 32>), !cir.bool
57+
// CIR: %{{[0-9]+}} = cir.cast(int_to_bool, %{{[0-9]+}} : !s32i), !cir.bool
5858
#endif
5959

6060
#ifdef CIR_ONLY
6161
void *p;
6262
bool b3 = p; // ptr to bool
63-
// CIR: %{{[0-9]+}} = cir.cast(ptr_to_bool, %{{[0-9]+}} : !cir.ptr<!cir.void>), !cir.bool
63+
// CIR: %{{[0-9]+}} = cir.cast(ptr_to_bool, %{{[0-9]+}} : !cir.ptr<!void>), !cir.bool
6464
#endif
6565

6666
float f;
@@ -78,11 +78,11 @@ bool cptr(void *d) {
7878
return x;
7979
}
8080

81-
// CIR: cir.func @cptr(%arg0: !cir.ptr<!cir.void>
82-
// CIR: %[[DPTR:[0-9]+]] = cir.alloca !cir.ptr<!cir.void>, !cir.ptr<!cir.ptr<!cir.void>>, ["d", init] {alignment = 8 : i64}
81+
// CIR: cir.func @cptr(%arg0: !cir.ptr<!void>
82+
// CIR: %[[DPTR:[0-9]+]] = cir.alloca !cir.ptr<!void>, !cir.ptr<!cir.ptr<!void>>, ["d", init] {alignment = 8 : i64}
8383

84-
// CIR: %[[DVAL:[0-9]+]] = cir.load %[[DPTR]] : !cir.ptr<!cir.ptr<!cir.void>>, !cir.ptr<!cir.void>
85-
// CIR: %{{[0-9]+}} = cir.cast(ptr_to_bool, %[[DVAL]] : !cir.ptr<!cir.void>), !cir.bool
84+
// CIR: %[[DVAL:[0-9]+]] = cir.load %[[DPTR]] : !cir.ptr<!cir.ptr<!void>>, !cir.ptr<!void>
85+
// CIR: %{{[0-9]+}} = cir.cast(ptr_to_bool, %[[DVAL]] : !cir.ptr<!void>), !cir.bool
8686
#endif
8787

8888
void should_not_cast() {

clang/test/CIR/CodeGen/local-vars.cpp

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -22,27 +22,27 @@ void test() {
2222

2323
// CHECK: module
2424
// CHECK: cir.func @test()
25-
// CHECK: %[[I_PTR:.*]] = cir.alloca !cir.int<s, 32>, !cir.ptr<!cir.int<s, 32>>, ["i", init] {alignment = 4 : i64}
26-
// CHECK: %[[L_PTR:.*]] = cir.alloca !cir.int<s, 64>, !cir.ptr<!cir.int<s, 64>>, ["l", init] {alignment = 8 : i64}
25+
// CHECK: %[[I_PTR:.*]] = cir.alloca !s32i, !cir.ptr<!s32i>, ["i", init] {alignment = 4 : i64}
26+
// CHECK: %[[L_PTR:.*]] = cir.alloca !s64i, !cir.ptr<!s64i>, ["l", init] {alignment = 8 : i64}
2727
// CHECK: %[[F_PTR:.*]] = cir.alloca !cir.float, !cir.ptr<!cir.float>, ["f", init] {alignment = 4 : i64}
2828
// CHECK: %[[D_PTR:.*]] = cir.alloca !cir.double, !cir.ptr<!cir.double>, ["d", init] {alignment = 8 : i64}
2929
// CHECK: %[[B1_PTR:.*]] = cir.alloca !cir.bool, !cir.ptr<!cir.bool>, ["b1", init] {alignment = 1 : i64}
3030
// CHECK: %[[B2_PTR:.*]] = cir.alloca !cir.bool, !cir.ptr<!cir.bool>, ["b2", init] {alignment = 1 : i64}
31-
// CHECK: %[[CI_PTR:.*]] = cir.alloca !cir.int<s, 32>, !cir.ptr<!cir.int<s, 32>>, ["ci", init, const] {alignment = 4 : i64}
32-
// CHECK: %[[CL_PTR:.*]] = cir.alloca !cir.int<s, 64>, !cir.ptr<!cir.int<s, 64>>, ["cl", init, const] {alignment = 8 : i64}
31+
// CHECK: %[[CI_PTR:.*]] = cir.alloca !s32i, !cir.ptr<!s32i>, ["ci", init, const] {alignment = 4 : i64}
32+
// CHECK: %[[CL_PTR:.*]] = cir.alloca !s64i, !cir.ptr<!s64i>, ["cl", init, const] {alignment = 8 : i64}
3333
// CHECK: %[[CF_PTR:.*]] = cir.alloca !cir.float, !cir.ptr<!cir.float>, ["cf", init, const] {alignment = 4 : i64}
3434
// CHECK: %[[CD_PTR:.*]] = cir.alloca !cir.double, !cir.ptr<!cir.double>, ["cd", init, const] {alignment = 8 : i64}
3535
// CHECK: %[[CB1_PTR:.*]] = cir.alloca !cir.bool, !cir.ptr<!cir.bool>, ["cb1", init, const] {alignment = 1 : i64}
3636
// CHECK: %[[CB2_PTR:.*]] = cir.alloca !cir.bool, !cir.ptr<!cir.bool>, ["cb2", init, const] {alignment = 1 : i64}
37-
// CHECK: %[[UII_PTR:.*]] = cir.alloca !cir.int<s, 32>, !cir.ptr<!cir.int<s, 32>>, ["uii"] {alignment = 4 : i64}
38-
// CHECK: %[[UIL_PTR:.*]] = cir.alloca !cir.int<s, 64>, !cir.ptr<!cir.int<s, 64>>, ["uil"] {alignment = 8 : i64}
37+
// CHECK: %[[UII_PTR:.*]] = cir.alloca !s32i, !cir.ptr<!s32i>, ["uii"] {alignment = 4 : i64}
38+
// CHECK: %[[UIL_PTR:.*]] = cir.alloca !s64i, !cir.ptr<!s64i>, ["uil"] {alignment = 8 : i64}
3939
// CHECK: %[[UIF_PTR:.*]] = cir.alloca !cir.float, !cir.ptr<!cir.float>, ["uif"] {alignment = 4 : i64}
4040
// CHECK: %[[UID_PTR:.*]] = cir.alloca !cir.double, !cir.ptr<!cir.double>, ["uid"] {alignment = 8 : i64}
4141
// CHECK: %[[UIB_PTR:.*]] = cir.alloca !cir.bool, !cir.ptr<!cir.bool>, ["uib"] {alignment = 1 : i64}
42-
// CHECK: %[[ONE:.*]] = cir.const #cir.int<1> : !cir.int<s, 32>
43-
// CHECK: cir.store %[[ONE]], %[[I_PTR]] : !cir.int<s, 32>, !cir.ptr<!cir.int<s, 32>>
44-
// CHECK: %[[TWO:.*]] = cir.const #cir.int<2> : !cir.int<s, 64>
45-
// CHECK: cir.store %[[TWO]], %[[L_PTR]] : !cir.int<s, 64>, !cir.ptr<!cir.int<s, 64>>
42+
// CHECK: %[[ONE:.*]] = cir.const #cir.int<1> : !s32i
43+
// CHECK: cir.store %[[ONE]], %[[I_PTR]] : !s32i, !cir.ptr<!s32i>
44+
// CHECK: %[[TWO:.*]] = cir.const #cir.int<2> : !s64i
45+
// CHECK: cir.store %[[TWO]], %[[L_PTR]] : !s64i, !cir.ptr<!s64i>
4646
// CHECK: %[[THREE:.*]] = cir.const #cir.fp<3.0{{.*}}> : !cir.float
4747
// CHECK: cir.store %[[THREE]], %[[F_PTR]] : !cir.float, !cir.ptr<!cir.float>
4848
// CHECK: %[[FOUR:.*]] = cir.const #cir.fp<4.0{{.*}}> : !cir.double
@@ -51,10 +51,10 @@ void test() {
5151
// CHECK: cir.store %[[TRUE]], %[[B1_PTR]] : !cir.bool, !cir.ptr<!cir.bool>
5252
// CHECK: %[[FALSE:.*]] = cir.const #false
5353
// CHECK: cir.store %[[FALSE]], %[[B2_PTR]] : !cir.bool, !cir.ptr<!cir.bool>
54-
// CHECK: %[[ONEC:.*]] = cir.const #cir.int<1> : !cir.int<s, 32>
55-
// CHECK: cir.store %[[ONEC]], %[[CI_PTR]] : !cir.int<s, 32>, !cir.ptr<!cir.int<s, 32>>
56-
// CHECK: %[[TWOC:.*]] = cir.const #cir.int<2> : !cir.int<s, 64>
57-
// CHECK: cir.store %[[TWOC]], %[[CL_PTR]] : !cir.int<s, 64>, !cir.ptr<!cir.int<s, 64>>
54+
// CHECK: %[[ONEC:.*]] = cir.const #cir.int<1> : !s32i
55+
// CHECK: cir.store %[[ONEC]], %[[CI_PTR]] : !s32i, !cir.ptr<!s32i>
56+
// CHECK: %[[TWOC:.*]] = cir.const #cir.int<2> : !s64i
57+
// CHECK: cir.store %[[TWOC]], %[[CL_PTR]] : !s64i, !cir.ptr<!s64i>
5858
// CHECK: %[[THREEC:.*]] = cir.const #cir.fp<3.0{{.*}}> : !cir.float
5959
// CHECK: cir.store %[[THREEC]], %[[CF_PTR]] : !cir.float, !cir.ptr<!cir.float>
6060
// CHECK: %[[FOURC:.*]] = cir.const #cir.fp<4.0{{.*}}> : !cir.double

clang/test/CIR/CodeGen/unary-expr-or-type-trait.cpp

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -2,46 +2,46 @@
22

33
void foo() {
44
unsigned long b = sizeof(bool);
5-
// CHECK: cir.const #cir.int<1> : !cir.int<u, 64>
5+
// CHECK: cir.const #cir.int<1> : !u64i
66

77
unsigned long i = sizeof(int);
8-
// CHECK: cir.const #cir.int<4> : !cir.int<u, 64>
8+
// CHECK: cir.const #cir.int<4> : !u64i
99

1010
unsigned long l = sizeof(long);
11-
// CHECK: cir.const #cir.int<8> : !cir.int<u, 64>
11+
// CHECK: cir.const #cir.int<8> : !u64i
1212

1313
unsigned long f = sizeof(float);
14-
// CHECK: cir.const #cir.int<4> : !cir.int<u, 64>
14+
// CHECK: cir.const #cir.int<4> : !u64i
1515

1616
unsigned long d = sizeof(double);
17-
// CHECK: cir.const #cir.int<8> : !cir.int<u, 64>
17+
// CHECK: cir.const #cir.int<8> : !u64i
1818

1919
unsigned long iArr = sizeof(int[5]);
20-
// CHECK: cir.const #cir.int<20> : !cir.int<u, 64>
20+
// CHECK: cir.const #cir.int<20> : !u64i
2121

2222
unsigned long dArr = sizeof(double[5]);
23-
// CHECK: cir.const #cir.int<40> : !cir.int<u, 64>
23+
// CHECK: cir.const #cir.int<40> : !u64i
2424
}
2525

2626
void foo2() {
2727
unsigned long b = alignof(bool);
28-
// CHECK: cir.const #cir.int<1> : !cir.int<u, 64>
28+
// CHECK: cir.const #cir.int<1> : !u64i
2929

3030
unsigned long i = alignof(int);
31-
// CHECK: cir.const #cir.int<4> : !cir.int<u, 64>
31+
// CHECK: cir.const #cir.int<4> : !u64i
3232

3333
unsigned long l = alignof(long);
34-
// CHECK: cir.const #cir.int<8> : !cir.int<u, 64>
34+
// CHECK: cir.const #cir.int<8> : !u64i
3535

3636
unsigned long f = alignof(float);
37-
// CHECK: cir.const #cir.int<4> : !cir.int<u, 64>
37+
// CHECK: cir.const #cir.int<4> : !u64i
3838

3939
unsigned long d = alignof(double);
40-
// CHECK: cir.const #cir.int<8> : !cir.int<u, 64>
40+
// CHECK: cir.const #cir.int<8> : !u64i
4141

4242
unsigned long iArr = alignof(int[5]);
43-
// CHECK: cir.const #cir.int<4> : !cir.int<u, 64>
43+
// CHECK: cir.const #cir.int<4> : !u64i
4444

4545
unsigned long dArr = alignof(double[5]);
46-
// CHECK: cir.const #cir.int<8> : !cir.int<u, 64>
46+
// CHECK: cir.const #cir.int<8> : !u64i
4747
}

0 commit comments

Comments
 (0)