Skip to content

Commit 8ac6026

Browse files
committed
[CIR][Dialect] Remove 22 prefix and suffix from type aliases
We were previously printing the type alias for `struct S` as `!ty_22S22` instead of just `!ty_S`. This was because our alias computation for a StructType did the following: os << "ty_" << structType.getName() `structType.getName()` is a `StringAttr`, and writing a `StringAttr` to an output stream adds double quotes around the actual string [1][2]. These double quotes then get hex-encoded as 22 [3]. We can fix this by writing the actual string value instead. Aliases that would end in a number will now receive a trailing underscore because of MLIR's alias sanitization not allowing a trailing digit [4] (which ironically didn't kick in even though our aliases were always previously ending with a number, which might be a bug in the sanitization logic). Aliases containing other special characters (e.g. `::`) will still be escaped as before. In other words: ``` struct S {}; // before: !ty_22S22 = ... // after: !ty_S = ... struct S1 {}; // before: !ty_22S122 = ... // after: !ty_S1_ = ... struct std::string {}; // before: !ty_22std3A3Astring22 // after: !ty_std3A3Astring ``` I'm not a big fan of the trailing underscore special-case, but I also don't want to touch core MLIR logic, and I think the end result is still nicer than before. The tests were mechanically updated with the following command run inside `clang/test/CIR`, and the same commands can be run to update the tests for any in-flight patches. (These are for GNU sed; for macOS change the `-i` to `-i ''`.) find . -type f | xargs sed -i -E -e 's/ty_22([A-Za-z0-9_$]+[0-9])22/ty_\1_/g' -e 's/ty_22([A-Za-z0-9_$]+)22/ty_\1/g' clang/test/CIR/CodeGen/stmtexpr-init.c needed an additional minor fix to swap the expected order of two type aliases in the CIR output. clang/test/CIR/CodeGen/coro-task.cpp needed some surgery because it was searching for `22` to find the end of a type alias; I changed it to search for the actual alias instead. [1] https://github.com/llvm/llvm-project/blob/b3d2d5039b9b8aa10a86c593387f200b15c02aef/mlir/lib/IR/AsmPrinter.cpp#L2295 [2] https://github.com/llvm/llvm-project/blob/b3d2d5039b9b8aa10a86c593387f200b15c02aef/mlir/lib/IR/AsmPrinter.cpp#L2763 [3] https://github.com/llvm/llvm-project/blob/b3d2d5039b9b8aa10a86c593387f200b15c02aef/mlir/lib/IR/AsmPrinter.cpp#L1014 [4] https://github.com/llvm/llvm-project/blob/b3d2d5039b9b8aa10a86c593387f200b15c02aef/mlir/lib/IR/AsmPrinter.cpp#L1154
1 parent d167034 commit 8ac6026

Some content is hidden

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

79 files changed

+791
-791
lines changed

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

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -59,11 +59,11 @@ struct CIROpAsmDialectInterface : public OpAsmDialectInterface {
5959

6060
AliasResult getAlias(Type type, raw_ostream &os) const final {
6161
if (auto structType = dyn_cast<StructType>(type)) {
62-
if (!structType.getName()) {
62+
StringAttr nameAttr = structType.getName();
63+
if (!nameAttr)
6364
os << "ty_anon_" << structType.getKindAsStr();
64-
return AliasResult::OverridableAlias;
65-
}
66-
os << "ty_" << structType.getName();
65+
else
66+
os << "ty_" << nameAttr.getValue();
6767
return AliasResult::OverridableAlias;
6868
}
6969
if (auto intType = dyn_cast<IntType>(type)) {

clang/test/CIR/CodeGen/String.cpp

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -18,56 +18,56 @@ void test() {
1818
}
1919

2020
// CHECK: cir.func linkonce_odr @_ZN6StringC2Ev
21-
// CHECK-NEXT: %0 = cir.alloca !cir.ptr<!ty_22String22>
21+
// CHECK-NEXT: %0 = cir.alloca !cir.ptr<!ty_String>
2222
// CHECK-NEXT: cir.store %arg0, %0
2323
// CHECK-NEXT: %1 = cir.load %0
2424
// CHECK-NEXT: %2 = cir.get_member %1[0] {name = "storage"}
2525
// CHECK-NEXT: %3 = cir.const #cir.ptr<null> : !cir.ptr<!s8i>
2626
// CHECK-NEXT: cir.store %3, %2 : !cir.ptr<!s8i>, !cir.ptr<!cir.ptr<!s8i>>
27-
// CHECK-NEXT: %4 = cir.get_member %1[1] {name = "size"} : !cir.ptr<!ty_22String22> -> !cir.ptr<!s64i>
27+
// CHECK-NEXT: %4 = cir.get_member %1[1] {name = "size"} : !cir.ptr<!ty_String> -> !cir.ptr<!s64i>
2828
// CHECK-NEXT: %5 = cir.const #cir.int<0> : !s32i
2929
// CHECK-NEXT: %6 = cir.cast(integral, %5 : !s32i), !s64i
3030
// CHECK-NEXT: cir.store %6, %4 : !s64i, !cir.ptr<!s64i>
3131
// CHECK-NEXT: cir.return
3232
// CHECK-NEXT: }
3333
// CHECK: cir.func linkonce_odr @_ZN6StringC2Ei
34-
// CHECK-NEXT: %0 = cir.alloca !cir.ptr<!ty_22String22>
34+
// CHECK-NEXT: %0 = cir.alloca !cir.ptr<!ty_String>
3535
// CHECK-NEXT: %1 = cir.alloca !s32i, !cir.ptr<!s32i>, ["size", init]
3636
// CHECK-NEXT: cir.store %arg0, %0
3737
// CHECK-NEXT: cir.store %arg1, %1
3838
// CHECK-NEXT: %2 = cir.load %0
3939
// CHECK-NEXT: %3 = cir.get_member %2[0] {name = "storage"}
4040
// CHECK-NEXT: %4 = cir.const #cir.ptr<null> : !cir.ptr<!s8i>
4141
// CHECK-NEXT: cir.store %4, %3
42-
// CHECK-NEXT: %5 = cir.get_member %2[1] {name = "size"} : !cir.ptr<!ty_22String22> -> !cir.ptr<!s64i>
42+
// CHECK-NEXT: %5 = cir.get_member %2[1] {name = "size"} : !cir.ptr<!ty_String> -> !cir.ptr<!s64i>
4343
// CHECK-NEXT: %6 = cir.load %1 : !cir.ptr<!s32i>, !s32i
4444
// CHECK-NEXT: %7 = cir.cast(integral, %6 : !s32i), !s64i
4545
// CHECK-NEXT: cir.store %7, %5 : !s64i, !cir.ptr<!s64i>
4646
// CHECK-NEXT: cir.return
4747
// CHECK-NEXT: }
4848

4949
// CHECK: cir.func linkonce_odr @_ZN6StringC2EPKc
50-
// CHECK-NEXT: %0 = cir.alloca !cir.ptr<!ty_22String22>, !cir.ptr<!cir.ptr<!ty_22String22>>, ["this", init] {alignment = 8 : i64}
50+
// CHECK-NEXT: %0 = cir.alloca !cir.ptr<!ty_String>, !cir.ptr<!cir.ptr<!ty_String>>, ["this", init] {alignment = 8 : i64}
5151
// CHECK-NEXT: %1 = cir.alloca !cir.ptr<!s8i>, !cir.ptr<!cir.ptr<!s8i>>, ["s", init] {alignment = 8 : i64}
52-
// CHECK-NEXT: cir.store %arg0, %0 : !cir.ptr<!ty_22String22>, !cir.ptr<!cir.ptr<!ty_22String22>>
52+
// CHECK-NEXT: cir.store %arg0, %0 : !cir.ptr<!ty_String>, !cir.ptr<!cir.ptr<!ty_String>>
5353
// CHECK-NEXT: cir.store %arg1, %1 : !cir.ptr<!s8i>, !cir.ptr<!cir.ptr<!s8i>>
54-
// CHECK-NEXT: %2 = cir.load %0 : !cir.ptr<!cir.ptr<!ty_22String22>>, !cir.ptr<!ty_22String22>
55-
// CHECK-NEXT: %3 = cir.get_member %2[0] {name = "storage"} : !cir.ptr<!ty_22String22> -> !cir.ptr<!cir.ptr<!s8i>>
54+
// CHECK-NEXT: %2 = cir.load %0 : !cir.ptr<!cir.ptr<!ty_String>>, !cir.ptr<!ty_String>
55+
// CHECK-NEXT: %3 = cir.get_member %2[0] {name = "storage"} : !cir.ptr<!ty_String> -> !cir.ptr<!cir.ptr<!s8i>>
5656
// CHECK-NEXT: %4 = cir.const #cir.ptr<null> : !cir.ptr<!s8i>
5757
// CHECK-NEXT: cir.store %4, %3 : !cir.ptr<!s8i>, !cir.ptr<!cir.ptr<!s8i>>
5858
// CHECK-NEXT: cir.return
5959

6060
// CHECK: cir.func linkonce_odr @_ZN6StringC1EPKc
61-
// CHECK-NEXT: %0 = cir.alloca !cir.ptr<!ty_22String22>, !cir.ptr<!cir.ptr<!ty_22String22>>, ["this", init] {alignment = 8 : i64}
61+
// CHECK-NEXT: %0 = cir.alloca !cir.ptr<!ty_String>, !cir.ptr<!cir.ptr<!ty_String>>, ["this", init] {alignment = 8 : i64}
6262
// CHECK-NEXT: %1 = cir.alloca !cir.ptr<!s8i>, !cir.ptr<!cir.ptr<!s8i>>, ["s", init] {alignment = 8 : i64}
63-
// CHECK-NEXT: cir.store %arg0, %0 : !cir.ptr<!ty_22String22>, !cir.ptr<!cir.ptr<!ty_22String22>>
63+
// CHECK-NEXT: cir.store %arg0, %0 : !cir.ptr<!ty_String>, !cir.ptr<!cir.ptr<!ty_String>>
6464
// CHECK-NEXT: cir.store %arg1, %1 : !cir.ptr<!s8i>, !cir.ptr<!cir.ptr<!s8i>>
65-
// CHECK-NEXT: %2 = cir.load %0 : !cir.ptr<!cir.ptr<!ty_22String22>>, !cir.ptr<!ty_22String22>
65+
// CHECK-NEXT: %2 = cir.load %0 : !cir.ptr<!cir.ptr<!ty_String>>, !cir.ptr<!ty_String>
6666
// CHECK-NEXT: %3 = cir.load %1 : !cir.ptr<!cir.ptr<!s8i>>, !cir.ptr<!s8i>
67-
// CHECK-NEXT: cir.call @_ZN6StringC2EPKc(%2, %3) : (!cir.ptr<!ty_22String22>, !cir.ptr<!s8i>) -> ()
67+
// CHECK-NEXT: cir.call @_ZN6StringC2EPKc(%2, %3) : (!cir.ptr<!ty_String>, !cir.ptr<!s8i>) -> ()
6868
// CHECK-NEXT: cir.return
6969

7070
// CHECK: cir.func @_Z4testv()
71-
// CHECK: cir.call @_ZN6StringC1Ev(%0) : (!cir.ptr<!ty_22String22>) -> ()
72-
// CHECK: cir.call @_ZN6StringC1Ei(%1, %3) : (!cir.ptr<!ty_22String22>, !s32i) -> ()
73-
// CHECK: cir.call @_ZN6StringC1EPKc(%2, %5) : (!cir.ptr<!ty_22String22>, !cir.ptr<!s8i>) -> ()
71+
// CHECK: cir.call @_ZN6StringC1Ev(%0) : (!cir.ptr<!ty_String>) -> ()
72+
// CHECK: cir.call @_ZN6StringC1Ei(%1, %3) : (!cir.ptr<!ty_String>, !s32i) -> ()
73+
// CHECK: cir.call @_ZN6StringC1EPKc(%2, %5) : (!cir.ptr<!ty_String>, !cir.ptr<!s8i>) -> ()

clang/test/CIR/CodeGen/abstract-cond.c

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -11,17 +11,17 @@ int f6(int a0, struct s6 a1, struct s6 a2) {
1111

1212
// CIR-LABEL: @f6
1313
// CIR: %[[A0:.*]] = cir.alloca !s32i, !cir.ptr<!s32i>, ["a0"
14-
// CIR: %[[A1:.*]] = cir.alloca !ty_22s622, !cir.ptr<!ty_22s622>, ["a1"
15-
// CIR: %[[A2:.*]] = cir.alloca !ty_22s622, !cir.ptr<!ty_22s622>, ["a2"
16-
// CIR: %[[TMP:.*]] = cir.alloca !ty_22s622, !cir.ptr<!ty_22s622>, ["tmp"] {alignment = 4 : i64}
14+
// CIR: %[[A1:.*]] = cir.alloca !ty_s6_, !cir.ptr<!ty_s6_>, ["a1"
15+
// CIR: %[[A2:.*]] = cir.alloca !ty_s6_, !cir.ptr<!ty_s6_>, ["a2"
16+
// CIR: %[[TMP:.*]] = cir.alloca !ty_s6_, !cir.ptr<!ty_s6_>, ["tmp"] {alignment = 4 : i64}
1717
// CIR: %[[LOAD_A0:.*]] = cir.load %[[A0]] : !cir.ptr<!s32i>, !s32i
1818
// CIR: %[[COND:.*]] = cir.cast(int_to_bool, %[[LOAD_A0]] : !s32i), !cir.bool
1919
// CIR: cir.if %[[COND]] {
20-
// CIR: cir.copy %[[A1]] to %[[TMP]] : !cir.ptr<!ty_22s622>
20+
// CIR: cir.copy %[[A1]] to %[[TMP]] : !cir.ptr<!ty_s6_>
2121
// CIR: } else {
22-
// CIR: cir.copy %[[A2]] to %[[TMP]] : !cir.ptr<!ty_22s622>
22+
// CIR: cir.copy %[[A2]] to %[[TMP]] : !cir.ptr<!ty_s6_>
2323
// CIR: }
24-
// CIR: cir.get_member %[[TMP]][0] {name = "f0"} : !cir.ptr<!ty_22s622> -> !cir.ptr<!s32i>
24+
// CIR: cir.get_member %[[TMP]][0] {name = "f0"} : !cir.ptr<!ty_s6_> -> !cir.ptr<!s32i>
2525

2626
// LLVM-LABEL: @f6
2727
// LLVM: %[[LOAD_A0:.*]] = load i32, ptr {{.*}}

clang/test/CIR/CodeGen/agg-copy.c

Lines changed: 39 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -10,65 +10,65 @@ typedef struct {
1010
} A;
1111

1212
// CHECK: cir.func @foo1
13-
// CHECK: [[TMP0:%.*]] = cir.alloca !cir.ptr<!ty_22A22>, !cir.ptr<!cir.ptr<!ty_22A22>>, ["a1", init]
14-
// CHECK: [[TMP1:%.*]] = cir.alloca !cir.ptr<!ty_22A22>, !cir.ptr<!cir.ptr<!ty_22A22>>, ["a2", init]
15-
// CHECK: cir.store %arg0, [[TMP0]] : !cir.ptr<!ty_22A22>, !cir.ptr<!cir.ptr<!ty_22A22>>
16-
// CHECK: cir.store %arg1, [[TMP1]] : !cir.ptr<!ty_22A22>, !cir.ptr<!cir.ptr<!ty_22A22>>
17-
// CHECK: [[TMP2:%.*]] = cir.load [[TMP0]] : !cir.ptr<!cir.ptr<!ty_22A22>>, !cir.ptr<!ty_22A22>
13+
// CHECK: [[TMP0:%.*]] = cir.alloca !cir.ptr<!ty_A>, !cir.ptr<!cir.ptr<!ty_A>>, ["a1", init]
14+
// CHECK: [[TMP1:%.*]] = cir.alloca !cir.ptr<!ty_A>, !cir.ptr<!cir.ptr<!ty_A>>, ["a2", init]
15+
// CHECK: cir.store %arg0, [[TMP0]] : !cir.ptr<!ty_A>, !cir.ptr<!cir.ptr<!ty_A>>
16+
// CHECK: cir.store %arg1, [[TMP1]] : !cir.ptr<!ty_A>, !cir.ptr<!cir.ptr<!ty_A>>
17+
// CHECK: [[TMP2:%.*]] = cir.load [[TMP0]] : !cir.ptr<!cir.ptr<!ty_A>>, !cir.ptr<!ty_A>
1818
// CHECK: [[TMP3:%.*]] = cir.const #cir.int<1> : !s32i
19-
// CHECK: [[TMP4:%.*]] = cir.ptr_stride([[TMP2]] : !cir.ptr<!ty_22A22>, [[TMP3]] : !s32i), !cir.ptr<!ty_22A22>
20-
// CHECK: [[TMP5:%.*]] = cir.load [[TMP1]] : !cir.ptr<!cir.ptr<!ty_22A22>>, !cir.ptr<!ty_22A22>
19+
// CHECK: [[TMP4:%.*]] = cir.ptr_stride([[TMP2]] : !cir.ptr<!ty_A>, [[TMP3]] : !s32i), !cir.ptr<!ty_A>
20+
// CHECK: [[TMP5:%.*]] = cir.load [[TMP1]] : !cir.ptr<!cir.ptr<!ty_A>>, !cir.ptr<!ty_A>
2121
// CHECK: [[TMP6:%.*]] = cir.const #cir.int<1> : !s32i
22-
// CHECK: [[TMP7:%.*]] = cir.ptr_stride([[TMP5]] : !cir.ptr<!ty_22A22>, [[TMP6]] : !s32i), !cir.ptr<!ty_22A22>
23-
// CHECK: cir.copy [[TMP7]] to [[TMP4]] : !cir.ptr<!ty_22A22>
22+
// CHECK: [[TMP7:%.*]] = cir.ptr_stride([[TMP5]] : !cir.ptr<!ty_A>, [[TMP6]] : !s32i), !cir.ptr<!ty_A>
23+
// CHECK: cir.copy [[TMP7]] to [[TMP4]] : !cir.ptr<!ty_A>
2424
void foo1(A* a1, A* a2) {
2525
a1[1] = a2[1];
2626
}
2727

2828
// CHECK: cir.func @foo2
29-
// CHECK: [[TMP0:%.*]] = cir.alloca !cir.ptr<!ty_22A22>, !cir.ptr<!cir.ptr<!ty_22A22>>, ["a1", init]
30-
// CHECK: [[TMP1:%.*]] = cir.alloca !cir.ptr<!ty_22A22>, !cir.ptr<!cir.ptr<!ty_22A22>>, ["a2", init]
31-
// CHECK: cir.store %arg0, [[TMP0]] : !cir.ptr<!ty_22A22>, !cir.ptr<!cir.ptr<!ty_22A22>>
32-
// CHECK: cir.store %arg1, [[TMP1]] : !cir.ptr<!ty_22A22>, !cir.ptr<!cir.ptr<!ty_22A22>>
33-
// CHECK: [[TMP2:%.*]] = cir.load [[TMP0]] : !cir.ptr<!cir.ptr<!ty_22A22>>, !cir.ptr<!ty_22A22>
34-
// CHECK: [[TMP3:%.*]] = cir.get_member [[TMP2]][2] {name = "s"} : !cir.ptr<!ty_22A22> -> !cir.ptr<!ty_22S22>
35-
// CHECK: [[TMP4:%.*]] = cir.load [[TMP1]] : !cir.ptr<!cir.ptr<!ty_22A22>>, !cir.ptr<!ty_22A22>
36-
// CHECK: [[TMP5:%.*]] = cir.get_member [[TMP4]][2] {name = "s"} : !cir.ptr<!ty_22A22> -> !cir.ptr<!ty_22S22>
37-
// CHECK: cir.copy [[TMP5]] to [[TMP3]] : !cir.ptr<!ty_22S22>
29+
// CHECK: [[TMP0:%.*]] = cir.alloca !cir.ptr<!ty_A>, !cir.ptr<!cir.ptr<!ty_A>>, ["a1", init]
30+
// CHECK: [[TMP1:%.*]] = cir.alloca !cir.ptr<!ty_A>, !cir.ptr<!cir.ptr<!ty_A>>, ["a2", init]
31+
// CHECK: cir.store %arg0, [[TMP0]] : !cir.ptr<!ty_A>, !cir.ptr<!cir.ptr<!ty_A>>
32+
// CHECK: cir.store %arg1, [[TMP1]] : !cir.ptr<!ty_A>, !cir.ptr<!cir.ptr<!ty_A>>
33+
// CHECK: [[TMP2:%.*]] = cir.load [[TMP0]] : !cir.ptr<!cir.ptr<!ty_A>>, !cir.ptr<!ty_A>
34+
// CHECK: [[TMP3:%.*]] = cir.get_member [[TMP2]][2] {name = "s"} : !cir.ptr<!ty_A> -> !cir.ptr<!ty_S>
35+
// CHECK: [[TMP4:%.*]] = cir.load [[TMP1]] : !cir.ptr<!cir.ptr<!ty_A>>, !cir.ptr<!ty_A>
36+
// CHECK: [[TMP5:%.*]] = cir.get_member [[TMP4]][2] {name = "s"} : !cir.ptr<!ty_A> -> !cir.ptr<!ty_S>
37+
// CHECK: cir.copy [[TMP5]] to [[TMP3]] : !cir.ptr<!ty_S>
3838
void foo2(A* a1, A* a2) {
3939
a1->s = a2->s;
4040
}
4141

42-
// CHECK: cir.global external @a = #cir.zero : !ty_22A22
42+
// CHECK: cir.global external @a = #cir.zero : !ty_A
4343
// CHECK: cir.func @foo3
44-
// CHECK: [[TMP0]] = cir.alloca !ty_22A22, !cir.ptr<!ty_22A22>, ["__retval"] {alignment = 4 : i64}
45-
// CHECK: [[TMP1]] = cir.get_global @a : !cir.ptr<!ty_22A22>
46-
// CHECK: cir.copy [[TMP1]] to [[TMP0]] : !cir.ptr<!ty_22A22>
47-
// CHECK: [[TMP2]] = cir.load [[TMP0]] : !cir.ptr<!ty_22A22>, !ty_22A22
48-
// CHECK: cir.return [[TMP2]] : !ty_22A22
44+
// CHECK: [[TMP0]] = cir.alloca !ty_A, !cir.ptr<!ty_A>, ["__retval"] {alignment = 4 : i64}
45+
// CHECK: [[TMP1]] = cir.get_global @a : !cir.ptr<!ty_A>
46+
// CHECK: cir.copy [[TMP1]] to [[TMP0]] : !cir.ptr<!ty_A>
47+
// CHECK: [[TMP2]] = cir.load [[TMP0]] : !cir.ptr<!ty_A>, !ty_A
48+
// CHECK: cir.return [[TMP2]] : !ty_A
4949
A a;
5050
A foo3(void) {
5151
return a;
5252
}
5353

5454
// CHECK: cir.func @foo4
55-
// CHECK: [[TMP0]] = cir.alloca !cir.ptr<!ty_22A22>, !cir.ptr<!cir.ptr<!ty_22A22>>, ["a1", init]
56-
// CHECK: [[TMP1]] = cir.alloca !ty_22A22, !cir.ptr<!ty_22A22>, ["a2", init]
57-
// CHECK: cir.store %arg0, [[TMP0]] : !cir.ptr<!ty_22A22>, !cir.ptr<!cir.ptr<!ty_22A22>>
58-
// CHECK: [[TMP2]] = cir.load deref [[TMP0]] : !cir.ptr<!cir.ptr<!ty_22A22>>, !cir.ptr<!ty_22A22>
59-
// CHECK: cir.copy [[TMP2]] to [[TMP1]] : !cir.ptr<!ty_22A22>
55+
// CHECK: [[TMP0]] = cir.alloca !cir.ptr<!ty_A>, !cir.ptr<!cir.ptr<!ty_A>>, ["a1", init]
56+
// CHECK: [[TMP1]] = cir.alloca !ty_A, !cir.ptr<!ty_A>, ["a2", init]
57+
// CHECK: cir.store %arg0, [[TMP0]] : !cir.ptr<!ty_A>, !cir.ptr<!cir.ptr<!ty_A>>
58+
// CHECK: [[TMP2]] = cir.load deref [[TMP0]] : !cir.ptr<!cir.ptr<!ty_A>>, !cir.ptr<!ty_A>
59+
// CHECK: cir.copy [[TMP2]] to [[TMP1]] : !cir.ptr<!ty_A>
6060
void foo4(A* a1) {
6161
A a2 = *a1;
6262
}
6363

6464
A create() { A a; return a; }
6565

6666
// CHECK: cir.func {{.*@foo5}}
67-
// CHECK: [[TMP0:%.*]] = cir.alloca !ty_22A22, !cir.ptr<!ty_22A22>,
68-
// CHECK: [[TMP1:%.*]] = cir.alloca !ty_22A22, !cir.ptr<!ty_22A22>, ["tmp"] {alignment = 4 : i64}
69-
// CHECK: [[TMP2:%.*]] = cir.call @create() : () -> !ty_22A22
70-
// CHECK: cir.store [[TMP2]], [[TMP1]] : !ty_22A22, !cir.ptr<!ty_22A22>
71-
// CHECK: cir.copy [[TMP1]] to [[TMP0]] : !cir.ptr<!ty_22A22>
67+
// CHECK: [[TMP0:%.*]] = cir.alloca !ty_A, !cir.ptr<!ty_A>,
68+
// CHECK: [[TMP1:%.*]] = cir.alloca !ty_A, !cir.ptr<!ty_A>, ["tmp"] {alignment = 4 : i64}
69+
// CHECK: [[TMP2:%.*]] = cir.call @create() : () -> !ty_A
70+
// CHECK: cir.store [[TMP2]], [[TMP1]] : !ty_A, !cir.ptr<!ty_A>
71+
// CHECK: cir.copy [[TMP1]] to [[TMP0]] : !cir.ptr<!ty_A>
7272
void foo5() {
7373
A a;
7474
a = create();
@@ -77,11 +77,11 @@ void foo5() {
7777
void foo6(A* a1) {
7878
A a2 = (*a1);
7979
// CHECK: cir.func {{.*@foo6}}
80-
// CHECK: [[TMP0:%.*]] = cir.alloca !cir.ptr<!ty_22A22>, !cir.ptr<!cir.ptr<!ty_22A22>>, ["a1", init] {alignment = 8 : i64}
81-
// CHECK: [[TMP1:%.*]] = cir.alloca !ty_22A22, !cir.ptr<!ty_22A22>, ["a2", init] {alignment = 4 : i64}
82-
// CHECK: cir.store %arg0, [[TMP0]] : !cir.ptr<!ty_22A22>, !cir.ptr<!cir.ptr<!ty_22A22>>
83-
// CHECK: [[TMP2:%.*]] = cir.load deref [[TMP0]] : !cir.ptr<!cir.ptr<!ty_22A22>>, !cir.ptr<!ty_22A22>
84-
// CHECK: cir.copy [[TMP2]] to [[TMP1]] : !cir.ptr<!ty_22A22>
80+
// CHECK: [[TMP0:%.*]] = cir.alloca !cir.ptr<!ty_A>, !cir.ptr<!cir.ptr<!ty_A>>, ["a1", init] {alignment = 8 : i64}
81+
// CHECK: [[TMP1:%.*]] = cir.alloca !ty_A, !cir.ptr<!ty_A>, ["a2", init] {alignment = 4 : i64}
82+
// CHECK: cir.store %arg0, [[TMP0]] : !cir.ptr<!ty_A>, !cir.ptr<!cir.ptr<!ty_A>>
83+
// CHECK: [[TMP2:%.*]] = cir.load deref [[TMP0]] : !cir.ptr<!cir.ptr<!ty_A>>, !cir.ptr<!ty_A>
84+
// CHECK: cir.copy [[TMP2]] to [[TMP1]] : !cir.ptr<!ty_A>
8585
}
8686

8787
volatile A vol_a;

clang/test/CIR/CodeGen/agg-init.cpp

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
// RUN: %clang_cc1 -triple x86_64-unknown-linux-gnu -std=c++17 -fclangir -Wno-unused-value -emit-cir %s -o %t.cir
22
// RUN: FileCheck --input-file=%t.cir %s
33

4-
// CHECK: !ty_22yep_22 = !cir.struct<struct "yep_" {!cir.int<u, 32>, !cir.int<u, 32>}>
4+
// CHECK: !ty_yep_ = !cir.struct<struct "yep_" {!cir.int<u, 32>, !cir.int<u, 32>}>
55

66
typedef enum xxy_ {
77
xxy_Low = 0,
@@ -17,11 +17,11 @@ typedef struct yep_ {
1717
void use() { yop{}; }
1818

1919
// CHECK: cir.func @_Z3usev()
20-
// CHECK: %0 = cir.alloca !ty_22yep_22, !cir.ptr<!ty_22yep_22>, ["agg.tmp.ensured"] {alignment = 4 : i64}
21-
// CHECK: %1 = cir.get_member %0[0] {name = "Status"} : !cir.ptr<!ty_22yep_22> -> !cir.ptr<!u32i>
20+
// CHECK: %0 = cir.alloca !ty_yep_, !cir.ptr<!ty_yep_>, ["agg.tmp.ensured"] {alignment = 4 : i64}
21+
// CHECK: %1 = cir.get_member %0[0] {name = "Status"} : !cir.ptr<!ty_yep_> -> !cir.ptr<!u32i>
2222
// CHECK: %2 = cir.const #cir.int<0> : !u32i
2323
// CHECK: cir.store %2, %1 : !u32i, !cir.ptr<!u32i>
24-
// CHECK: %3 = cir.get_member %0[1] {name = "HC"} : !cir.ptr<!ty_22yep_22> -> !cir.ptr<!u32i>
24+
// CHECK: %3 = cir.get_member %0[1] {name = "HC"} : !cir.ptr<!ty_yep_> -> !cir.ptr<!u32i>
2525
// CHECK: %4 = cir.const #cir.int<0> : !u32i
2626
// CHECK: cir.store %4, %3 : !u32i, !cir.ptr<!u32i>
2727
// CHECK: cir.return
@@ -47,16 +47,16 @@ void yo() {
4747
}
4848

4949
// CHECK: cir.func @_Z2yov()
50-
// CHECK: %0 = cir.alloca !ty_22Yo22, !cir.ptr<!ty_22Yo22>, ["ext"] {alignment = 8 : i64}
51-
// CHECK: %1 = cir.alloca !ty_22Yo22, !cir.ptr<!ty_22Yo22>, ["ext2", init] {alignment = 8 : i64}
52-
// CHECK: %2 = cir.const #cir.const_struct<{#cir.int<1000070000> : !u32i, #cir.ptr<null> : !cir.ptr<!void>, #cir.int<0> : !u64i}> : !ty_22Yo22
53-
// CHECK: cir.store %2, %0 : !ty_22Yo22, !cir.ptr<!ty_22Yo22>
54-
// CHECK: %3 = cir.get_member %1[0] {name = "type"} : !cir.ptr<!ty_22Yo22> -> !cir.ptr<!u32i>
50+
// CHECK: %0 = cir.alloca !ty_Yo, !cir.ptr<!ty_Yo>, ["ext"] {alignment = 8 : i64}
51+
// CHECK: %1 = cir.alloca !ty_Yo, !cir.ptr<!ty_Yo>, ["ext2", init] {alignment = 8 : i64}
52+
// CHECK: %2 = cir.const #cir.const_struct<{#cir.int<1000070000> : !u32i, #cir.ptr<null> : !cir.ptr<!void>, #cir.int<0> : !u64i}> : !ty_Yo
53+
// CHECK: cir.store %2, %0 : !ty_Yo, !cir.ptr<!ty_Yo>
54+
// CHECK: %3 = cir.get_member %1[0] {name = "type"} : !cir.ptr<!ty_Yo> -> !cir.ptr<!u32i>
5555
// CHECK: %4 = cir.const #cir.int<1000066001> : !u32i
5656
// CHECK: cir.store %4, %3 : !u32i, !cir.ptr<!u32i>
57-
// CHECK: %5 = cir.get_member %1[1] {name = "next"} : !cir.ptr<!ty_22Yo22> -> !cir.ptr<!cir.ptr<!void>>
58-
// CHECK: %6 = cir.cast(bitcast, %0 : !cir.ptr<!ty_22Yo22>), !cir.ptr<!void>
57+
// CHECK: %5 = cir.get_member %1[1] {name = "next"} : !cir.ptr<!ty_Yo> -> !cir.ptr<!cir.ptr<!void>>
58+
// CHECK: %6 = cir.cast(bitcast, %0 : !cir.ptr<!ty_Yo>), !cir.ptr<!void>
5959
// CHECK: cir.store %6, %5 : !cir.ptr<!void>, !cir.ptr<!cir.ptr<!void>>
60-
// CHECK: %7 = cir.get_member %1[2] {name = "createFlags"} : !cir.ptr<!ty_22Yo22> -> !cir.ptr<!u64i>
60+
// CHECK: %7 = cir.get_member %1[2] {name = "createFlags"} : !cir.ptr<!ty_Yo> -> !cir.ptr<!u64i>
6161
// CHECK: %8 = cir.const #cir.int<0> : !u64i
6262
// CHECK: cir.store %8, %7 : !u64i, !cir.ptr<!u64i>

clang/test/CIR/CodeGen/agg-init2.cpp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
// RUN: %clang_cc1 -triple x86_64-unknown-linux-gnu -std=c++17 -fclangir -Wno-unused-value -emit-cir %s -o %t.cir
22
// RUN: FileCheck --input-file=%t.cir %s
33

4-
// CHECK: !ty_22Zero22 = !cir.struct<struct "Zero" {!cir.int<u, 8>}>
4+
// CHECK: !ty_Zero = !cir.struct<struct "Zero" {!cir.int<u, 8>}>
55

66
struct Zero {
77
void yolo();
@@ -14,7 +14,7 @@ void f() {
1414
}
1515

1616
// CHECK: cir.func @_Z1fv()
17-
// CHECK: %0 = cir.alloca !ty_22Zero22, !cir.ptr<!ty_22Zero22>, ["z0", init]
18-
// CHECK: %1 = cir.alloca !ty_22Zero22, !cir.ptr<!ty_22Zero22>, ["z1"]
19-
// CHECK: cir.call @_ZN4ZeroC1Ev(%0) : (!cir.ptr<!ty_22Zero22>) -> ()
17+
// CHECK: %0 = cir.alloca !ty_Zero, !cir.ptr<!ty_Zero>, ["z0", init]
18+
// CHECK: %1 = cir.alloca !ty_Zero, !cir.ptr<!ty_Zero>, ["z1"]
19+
// CHECK: cir.call @_ZN4ZeroC1Ev(%0) : (!cir.ptr<!ty_Zero>) -> ()
2020
// CHECK: cir.return

0 commit comments

Comments
 (0)