Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 4 additions & 4 deletions clang/lib/CIR/Dialect/IR/CIRDialect.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -59,11 +59,11 @@ struct CIROpAsmDialectInterface : public OpAsmDialectInterface {

AliasResult getAlias(Type type, raw_ostream &os) const final {
if (auto structType = dyn_cast<StructType>(type)) {
if (!structType.getName()) {
StringAttr nameAttr = structType.getName();
if (!nameAttr)
os << "ty_anon_" << structType.getKindAsStr();
return AliasResult::OverridableAlias;
}
os << "ty_" << structType.getName();
else
os << "ty_" << nameAttr.getValue();
return AliasResult::OverridableAlias;
}
if (auto intType = dyn_cast<IntType>(type)) {
Expand Down
30 changes: 15 additions & 15 deletions clang/test/CIR/CodeGen/String.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -18,56 +18,56 @@ void test() {
}

// CHECK: cir.func linkonce_odr @_ZN6StringC2Ev
// CHECK-NEXT: %0 = cir.alloca !cir.ptr<!ty_22String22>
// CHECK-NEXT: %0 = cir.alloca !cir.ptr<!ty_String>
// CHECK-NEXT: cir.store %arg0, %0
// CHECK-NEXT: %1 = cir.load %0
// CHECK-NEXT: %2 = cir.get_member %1[0] {name = "storage"}
// CHECK-NEXT: %3 = cir.const #cir.ptr<null> : !cir.ptr<!s8i>
// CHECK-NEXT: cir.store %3, %2 : !cir.ptr<!s8i>, !cir.ptr<!cir.ptr<!s8i>>
// CHECK-NEXT: %4 = cir.get_member %1[1] {name = "size"} : !cir.ptr<!ty_22String22> -> !cir.ptr<!s64i>
// CHECK-NEXT: %4 = cir.get_member %1[1] {name = "size"} : !cir.ptr<!ty_String> -> !cir.ptr<!s64i>
// CHECK-NEXT: %5 = cir.const #cir.int<0> : !s32i
// CHECK-NEXT: %6 = cir.cast(integral, %5 : !s32i), !s64i
// CHECK-NEXT: cir.store %6, %4 : !s64i, !cir.ptr<!s64i>
// CHECK-NEXT: cir.return
// CHECK-NEXT: }
// CHECK: cir.func linkonce_odr @_ZN6StringC2Ei
// CHECK-NEXT: %0 = cir.alloca !cir.ptr<!ty_22String22>
// CHECK-NEXT: %0 = cir.alloca !cir.ptr<!ty_String>
// CHECK-NEXT: %1 = cir.alloca !s32i, !cir.ptr<!s32i>, ["size", init]
// CHECK-NEXT: cir.store %arg0, %0
// CHECK-NEXT: cir.store %arg1, %1
// CHECK-NEXT: %2 = cir.load %0
// CHECK-NEXT: %3 = cir.get_member %2[0] {name = "storage"}
// CHECK-NEXT: %4 = cir.const #cir.ptr<null> : !cir.ptr<!s8i>
// CHECK-NEXT: cir.store %4, %3
// CHECK-NEXT: %5 = cir.get_member %2[1] {name = "size"} : !cir.ptr<!ty_22String22> -> !cir.ptr<!s64i>
// CHECK-NEXT: %5 = cir.get_member %2[1] {name = "size"} : !cir.ptr<!ty_String> -> !cir.ptr<!s64i>
// CHECK-NEXT: %6 = cir.load %1 : !cir.ptr<!s32i>, !s32i
// CHECK-NEXT: %7 = cir.cast(integral, %6 : !s32i), !s64i
// CHECK-NEXT: cir.store %7, %5 : !s64i, !cir.ptr<!s64i>
// CHECK-NEXT: cir.return
// CHECK-NEXT: }

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

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

// CHECK: cir.func @_Z4testv()
// CHECK: cir.call @_ZN6StringC1Ev(%0) : (!cir.ptr<!ty_22String22>) -> ()
// CHECK: cir.call @_ZN6StringC1Ei(%1, %3) : (!cir.ptr<!ty_22String22>, !s32i) -> ()
// CHECK: cir.call @_ZN6StringC1EPKc(%2, %5) : (!cir.ptr<!ty_22String22>, !cir.ptr<!s8i>) -> ()
// CHECK: cir.call @_ZN6StringC1Ev(%0) : (!cir.ptr<!ty_String>) -> ()
// CHECK: cir.call @_ZN6StringC1Ei(%1, %3) : (!cir.ptr<!ty_String>, !s32i) -> ()
// CHECK: cir.call @_ZN6StringC1EPKc(%2, %5) : (!cir.ptr<!ty_String>, !cir.ptr<!s8i>) -> ()
12 changes: 6 additions & 6 deletions clang/test/CIR/CodeGen/abstract-cond.c
Original file line number Diff line number Diff line change
Expand Up @@ -11,17 +11,17 @@ int f6(int a0, struct s6 a1, struct s6 a2) {

// CIR-LABEL: @f6
// CIR: %[[A0:.*]] = cir.alloca !s32i, !cir.ptr<!s32i>, ["a0"
// CIR: %[[A1:.*]] = cir.alloca !ty_22s622, !cir.ptr<!ty_22s622>, ["a1"
// CIR: %[[A2:.*]] = cir.alloca !ty_22s622, !cir.ptr<!ty_22s622>, ["a2"
// CIR: %[[TMP:.*]] = cir.alloca !ty_22s622, !cir.ptr<!ty_22s622>, ["tmp"] {alignment = 4 : i64}
// CIR: %[[A1:.*]] = cir.alloca !ty_s6_, !cir.ptr<!ty_s6_>, ["a1"
// CIR: %[[A2:.*]] = cir.alloca !ty_s6_, !cir.ptr<!ty_s6_>, ["a2"
// CIR: %[[TMP:.*]] = cir.alloca !ty_s6_, !cir.ptr<!ty_s6_>, ["tmp"] {alignment = 4 : i64}
// CIR: %[[LOAD_A0:.*]] = cir.load %[[A0]] : !cir.ptr<!s32i>, !s32i
// CIR: %[[COND:.*]] = cir.cast(int_to_bool, %[[LOAD_A0]] : !s32i), !cir.bool
// CIR: cir.if %[[COND]] {
// CIR: cir.copy %[[A1]] to %[[TMP]] : !cir.ptr<!ty_22s622>
// CIR: cir.copy %[[A1]] to %[[TMP]] : !cir.ptr<!ty_s6_>
// CIR: } else {
// CIR: cir.copy %[[A2]] to %[[TMP]] : !cir.ptr<!ty_22s622>
// CIR: cir.copy %[[A2]] to %[[TMP]] : !cir.ptr<!ty_s6_>
// CIR: }
// CIR: cir.get_member %[[TMP]][0] {name = "f0"} : !cir.ptr<!ty_22s622> -> !cir.ptr<!s32i>
// CIR: cir.get_member %[[TMP]][0] {name = "f0"} : !cir.ptr<!ty_s6_> -> !cir.ptr<!s32i>

// LLVM-LABEL: @f6
// LLVM: %[[LOAD_A0:.*]] = load i32, ptr {{.*}}
Expand Down
78 changes: 39 additions & 39 deletions clang/test/CIR/CodeGen/agg-copy.c
Original file line number Diff line number Diff line change
Expand Up @@ -10,65 +10,65 @@ typedef struct {
} A;

// CHECK: cir.func @foo1
// CHECK: [[TMP0:%.*]] = cir.alloca !cir.ptr<!ty_22A22>, !cir.ptr<!cir.ptr<!ty_22A22>>, ["a1", init]
// CHECK: [[TMP1:%.*]] = cir.alloca !cir.ptr<!ty_22A22>, !cir.ptr<!cir.ptr<!ty_22A22>>, ["a2", init]
// CHECK: cir.store %arg0, [[TMP0]] : !cir.ptr<!ty_22A22>, !cir.ptr<!cir.ptr<!ty_22A22>>
// CHECK: cir.store %arg1, [[TMP1]] : !cir.ptr<!ty_22A22>, !cir.ptr<!cir.ptr<!ty_22A22>>
// CHECK: [[TMP2:%.*]] = cir.load [[TMP0]] : !cir.ptr<!cir.ptr<!ty_22A22>>, !cir.ptr<!ty_22A22>
// CHECK: [[TMP0:%.*]] = cir.alloca !cir.ptr<!ty_A>, !cir.ptr<!cir.ptr<!ty_A>>, ["a1", init]
// CHECK: [[TMP1:%.*]] = cir.alloca !cir.ptr<!ty_A>, !cir.ptr<!cir.ptr<!ty_A>>, ["a2", init]
// CHECK: cir.store %arg0, [[TMP0]] : !cir.ptr<!ty_A>, !cir.ptr<!cir.ptr<!ty_A>>
// CHECK: cir.store %arg1, [[TMP1]] : !cir.ptr<!ty_A>, !cir.ptr<!cir.ptr<!ty_A>>
// CHECK: [[TMP2:%.*]] = cir.load [[TMP0]] : !cir.ptr<!cir.ptr<!ty_A>>, !cir.ptr<!ty_A>
// CHECK: [[TMP3:%.*]] = cir.const #cir.int<1> : !s32i
// CHECK: [[TMP4:%.*]] = cir.ptr_stride([[TMP2]] : !cir.ptr<!ty_22A22>, [[TMP3]] : !s32i), !cir.ptr<!ty_22A22>
// CHECK: [[TMP5:%.*]] = cir.load [[TMP1]] : !cir.ptr<!cir.ptr<!ty_22A22>>, !cir.ptr<!ty_22A22>
// CHECK: [[TMP4:%.*]] = cir.ptr_stride([[TMP2]] : !cir.ptr<!ty_A>, [[TMP3]] : !s32i), !cir.ptr<!ty_A>
// CHECK: [[TMP5:%.*]] = cir.load [[TMP1]] : !cir.ptr<!cir.ptr<!ty_A>>, !cir.ptr<!ty_A>
// CHECK: [[TMP6:%.*]] = cir.const #cir.int<1> : !s32i
// CHECK: [[TMP7:%.*]] = cir.ptr_stride([[TMP5]] : !cir.ptr<!ty_22A22>, [[TMP6]] : !s32i), !cir.ptr<!ty_22A22>
// CHECK: cir.copy [[TMP7]] to [[TMP4]] : !cir.ptr<!ty_22A22>
// CHECK: [[TMP7:%.*]] = cir.ptr_stride([[TMP5]] : !cir.ptr<!ty_A>, [[TMP6]] : !s32i), !cir.ptr<!ty_A>
// CHECK: cir.copy [[TMP7]] to [[TMP4]] : !cir.ptr<!ty_A>
void foo1(A* a1, A* a2) {
a1[1] = a2[1];
}

// CHECK: cir.func @foo2
// CHECK: [[TMP0:%.*]] = cir.alloca !cir.ptr<!ty_22A22>, !cir.ptr<!cir.ptr<!ty_22A22>>, ["a1", init]
// CHECK: [[TMP1:%.*]] = cir.alloca !cir.ptr<!ty_22A22>, !cir.ptr<!cir.ptr<!ty_22A22>>, ["a2", init]
// CHECK: cir.store %arg0, [[TMP0]] : !cir.ptr<!ty_22A22>, !cir.ptr<!cir.ptr<!ty_22A22>>
// CHECK: cir.store %arg1, [[TMP1]] : !cir.ptr<!ty_22A22>, !cir.ptr<!cir.ptr<!ty_22A22>>
// CHECK: [[TMP2:%.*]] = cir.load [[TMP0]] : !cir.ptr<!cir.ptr<!ty_22A22>>, !cir.ptr<!ty_22A22>
// CHECK: [[TMP3:%.*]] = cir.get_member [[TMP2]][2] {name = "s"} : !cir.ptr<!ty_22A22> -> !cir.ptr<!ty_22S22>
// CHECK: [[TMP4:%.*]] = cir.load [[TMP1]] : !cir.ptr<!cir.ptr<!ty_22A22>>, !cir.ptr<!ty_22A22>
// CHECK: [[TMP5:%.*]] = cir.get_member [[TMP4]][2] {name = "s"} : !cir.ptr<!ty_22A22> -> !cir.ptr<!ty_22S22>
// CHECK: cir.copy [[TMP5]] to [[TMP3]] : !cir.ptr<!ty_22S22>
// CHECK: [[TMP0:%.*]] = cir.alloca !cir.ptr<!ty_A>, !cir.ptr<!cir.ptr<!ty_A>>, ["a1", init]
// CHECK: [[TMP1:%.*]] = cir.alloca !cir.ptr<!ty_A>, !cir.ptr<!cir.ptr<!ty_A>>, ["a2", init]
// CHECK: cir.store %arg0, [[TMP0]] : !cir.ptr<!ty_A>, !cir.ptr<!cir.ptr<!ty_A>>
// CHECK: cir.store %arg1, [[TMP1]] : !cir.ptr<!ty_A>, !cir.ptr<!cir.ptr<!ty_A>>
// CHECK: [[TMP2:%.*]] = cir.load [[TMP0]] : !cir.ptr<!cir.ptr<!ty_A>>, !cir.ptr<!ty_A>
// CHECK: [[TMP3:%.*]] = cir.get_member [[TMP2]][2] {name = "s"} : !cir.ptr<!ty_A> -> !cir.ptr<!ty_S>
// CHECK: [[TMP4:%.*]] = cir.load [[TMP1]] : !cir.ptr<!cir.ptr<!ty_A>>, !cir.ptr<!ty_A>
// CHECK: [[TMP5:%.*]] = cir.get_member [[TMP4]][2] {name = "s"} : !cir.ptr<!ty_A> -> !cir.ptr<!ty_S>
// CHECK: cir.copy [[TMP5]] to [[TMP3]] : !cir.ptr<!ty_S>
void foo2(A* a1, A* a2) {
a1->s = a2->s;
}

// CHECK: cir.global external @a = #cir.zero : !ty_22A22
// CHECK: cir.global external @a = #cir.zero : !ty_A
// CHECK: cir.func @foo3
// CHECK: [[TMP0]] = cir.alloca !ty_22A22, !cir.ptr<!ty_22A22>, ["__retval"] {alignment = 4 : i64}
// CHECK: [[TMP1]] = cir.get_global @a : !cir.ptr<!ty_22A22>
// CHECK: cir.copy [[TMP1]] to [[TMP0]] : !cir.ptr<!ty_22A22>
// CHECK: [[TMP2]] = cir.load [[TMP0]] : !cir.ptr<!ty_22A22>, !ty_22A22
// CHECK: cir.return [[TMP2]] : !ty_22A22
// CHECK: [[TMP0]] = cir.alloca !ty_A, !cir.ptr<!ty_A>, ["__retval"] {alignment = 4 : i64}
// CHECK: [[TMP1]] = cir.get_global @a : !cir.ptr<!ty_A>
// CHECK: cir.copy [[TMP1]] to [[TMP0]] : !cir.ptr<!ty_A>
// CHECK: [[TMP2]] = cir.load [[TMP0]] : !cir.ptr<!ty_A>, !ty_A
// CHECK: cir.return [[TMP2]] : !ty_A
A a;
A foo3(void) {
return a;
}

// CHECK: cir.func @foo4
// CHECK: [[TMP0]] = cir.alloca !cir.ptr<!ty_22A22>, !cir.ptr<!cir.ptr<!ty_22A22>>, ["a1", init]
// CHECK: [[TMP1]] = cir.alloca !ty_22A22, !cir.ptr<!ty_22A22>, ["a2", init]
// CHECK: cir.store %arg0, [[TMP0]] : !cir.ptr<!ty_22A22>, !cir.ptr<!cir.ptr<!ty_22A22>>
// CHECK: [[TMP2]] = cir.load deref [[TMP0]] : !cir.ptr<!cir.ptr<!ty_22A22>>, !cir.ptr<!ty_22A22>
// CHECK: cir.copy [[TMP2]] to [[TMP1]] : !cir.ptr<!ty_22A22>
// CHECK: [[TMP0]] = cir.alloca !cir.ptr<!ty_A>, !cir.ptr<!cir.ptr<!ty_A>>, ["a1", init]
// CHECK: [[TMP1]] = cir.alloca !ty_A, !cir.ptr<!ty_A>, ["a2", init]
// CHECK: cir.store %arg0, [[TMP0]] : !cir.ptr<!ty_A>, !cir.ptr<!cir.ptr<!ty_A>>
// CHECK: [[TMP2]] = cir.load deref [[TMP0]] : !cir.ptr<!cir.ptr<!ty_A>>, !cir.ptr<!ty_A>
// CHECK: cir.copy [[TMP2]] to [[TMP1]] : !cir.ptr<!ty_A>
void foo4(A* a1) {
A a2 = *a1;
}

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

// CHECK: cir.func {{.*@foo5}}
// CHECK: [[TMP0:%.*]] = cir.alloca !ty_22A22, !cir.ptr<!ty_22A22>,
// CHECK: [[TMP1:%.*]] = cir.alloca !ty_22A22, !cir.ptr<!ty_22A22>, ["tmp"] {alignment = 4 : i64}
// CHECK: [[TMP2:%.*]] = cir.call @create() : () -> !ty_22A22
// CHECK: cir.store [[TMP2]], [[TMP1]] : !ty_22A22, !cir.ptr<!ty_22A22>
// CHECK: cir.copy [[TMP1]] to [[TMP0]] : !cir.ptr<!ty_22A22>
// CHECK: [[TMP0:%.*]] = cir.alloca !ty_A, !cir.ptr<!ty_A>,
// CHECK: [[TMP1:%.*]] = cir.alloca !ty_A, !cir.ptr<!ty_A>, ["tmp"] {alignment = 4 : i64}
// CHECK: [[TMP2:%.*]] = cir.call @create() : () -> !ty_A
// CHECK: cir.store [[TMP2]], [[TMP1]] : !ty_A, !cir.ptr<!ty_A>
// CHECK: cir.copy [[TMP1]] to [[TMP0]] : !cir.ptr<!ty_A>
void foo5() {
A a;
a = create();
Expand All @@ -77,11 +77,11 @@ void foo5() {
void foo6(A* a1) {
A a2 = (*a1);
// CHECK: cir.func {{.*@foo6}}
// CHECK: [[TMP0:%.*]] = cir.alloca !cir.ptr<!ty_22A22>, !cir.ptr<!cir.ptr<!ty_22A22>>, ["a1", init] {alignment = 8 : i64}
// CHECK: [[TMP1:%.*]] = cir.alloca !ty_22A22, !cir.ptr<!ty_22A22>, ["a2", init] {alignment = 4 : i64}
// CHECK: cir.store %arg0, [[TMP0]] : !cir.ptr<!ty_22A22>, !cir.ptr<!cir.ptr<!ty_22A22>>
// CHECK: [[TMP2:%.*]] = cir.load deref [[TMP0]] : !cir.ptr<!cir.ptr<!ty_22A22>>, !cir.ptr<!ty_22A22>
// CHECK: cir.copy [[TMP2]] to [[TMP1]] : !cir.ptr<!ty_22A22>
// CHECK: [[TMP0:%.*]] = cir.alloca !cir.ptr<!ty_A>, !cir.ptr<!cir.ptr<!ty_A>>, ["a1", init] {alignment = 8 : i64}
// CHECK: [[TMP1:%.*]] = cir.alloca !ty_A, !cir.ptr<!ty_A>, ["a2", init] {alignment = 4 : i64}
// CHECK: cir.store %arg0, [[TMP0]] : !cir.ptr<!ty_A>, !cir.ptr<!cir.ptr<!ty_A>>
// CHECK: [[TMP2:%.*]] = cir.load deref [[TMP0]] : !cir.ptr<!cir.ptr<!ty_A>>, !cir.ptr<!ty_A>
// CHECK: cir.copy [[TMP2]] to [[TMP1]] : !cir.ptr<!ty_A>
}

volatile A vol_a;
Expand Down
24 changes: 12 additions & 12 deletions clang/test/CIR/CodeGen/agg-init.cpp
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
// RUN: %clang_cc1 -triple x86_64-unknown-linux-gnu -std=c++17 -fclangir -Wno-unused-value -emit-cir %s -o %t.cir
// RUN: FileCheck --input-file=%t.cir %s

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

typedef enum xxy_ {
xxy_Low = 0,
Expand All @@ -17,11 +17,11 @@ typedef struct yep_ {
void use() { yop{}; }

// CHECK: cir.func @_Z3usev()
// CHECK: %0 = cir.alloca !ty_22yep_22, !cir.ptr<!ty_22yep_22>, ["agg.tmp.ensured"] {alignment = 4 : i64}
// CHECK: %1 = cir.get_member %0[0] {name = "Status"} : !cir.ptr<!ty_22yep_22> -> !cir.ptr<!u32i>
// CHECK: %0 = cir.alloca !ty_yep_, !cir.ptr<!ty_yep_>, ["agg.tmp.ensured"] {alignment = 4 : i64}
// CHECK: %1 = cir.get_member %0[0] {name = "Status"} : !cir.ptr<!ty_yep_> -> !cir.ptr<!u32i>
// CHECK: %2 = cir.const #cir.int<0> : !u32i
// CHECK: cir.store %2, %1 : !u32i, !cir.ptr<!u32i>
// CHECK: %3 = cir.get_member %0[1] {name = "HC"} : !cir.ptr<!ty_22yep_22> -> !cir.ptr<!u32i>
// CHECK: %3 = cir.get_member %0[1] {name = "HC"} : !cir.ptr<!ty_yep_> -> !cir.ptr<!u32i>
// CHECK: %4 = cir.const #cir.int<0> : !u32i
// CHECK: cir.store %4, %3 : !u32i, !cir.ptr<!u32i>
// CHECK: cir.return
Expand All @@ -47,16 +47,16 @@ void yo() {
}

// CHECK: cir.func @_Z2yov()
// CHECK: %0 = cir.alloca !ty_22Yo22, !cir.ptr<!ty_22Yo22>, ["ext"] {alignment = 8 : i64}
// CHECK: %1 = cir.alloca !ty_22Yo22, !cir.ptr<!ty_22Yo22>, ["ext2", init] {alignment = 8 : i64}
// CHECK: %2 = cir.const #cir.const_struct<{#cir.int<1000070000> : !u32i, #cir.ptr<null> : !cir.ptr<!void>, #cir.int<0> : !u64i}> : !ty_22Yo22
// CHECK: cir.store %2, %0 : !ty_22Yo22, !cir.ptr<!ty_22Yo22>
// CHECK: %3 = cir.get_member %1[0] {name = "type"} : !cir.ptr<!ty_22Yo22> -> !cir.ptr<!u32i>
// CHECK: %0 = cir.alloca !ty_Yo, !cir.ptr<!ty_Yo>, ["ext"] {alignment = 8 : i64}
// CHECK: %1 = cir.alloca !ty_Yo, !cir.ptr<!ty_Yo>, ["ext2", init] {alignment = 8 : i64}
// CHECK: %2 = cir.const #cir.const_struct<{#cir.int<1000070000> : !u32i, #cir.ptr<null> : !cir.ptr<!void>, #cir.int<0> : !u64i}> : !ty_Yo
// CHECK: cir.store %2, %0 : !ty_Yo, !cir.ptr<!ty_Yo>
// CHECK: %3 = cir.get_member %1[0] {name = "type"} : !cir.ptr<!ty_Yo> -> !cir.ptr<!u32i>
// CHECK: %4 = cir.const #cir.int<1000066001> : !u32i
// CHECK: cir.store %4, %3 : !u32i, !cir.ptr<!u32i>
// CHECK: %5 = cir.get_member %1[1] {name = "next"} : !cir.ptr<!ty_22Yo22> -> !cir.ptr<!cir.ptr<!void>>
// CHECK: %6 = cir.cast(bitcast, %0 : !cir.ptr<!ty_22Yo22>), !cir.ptr<!void>
// CHECK: %5 = cir.get_member %1[1] {name = "next"} : !cir.ptr<!ty_Yo> -> !cir.ptr<!cir.ptr<!void>>
// CHECK: %6 = cir.cast(bitcast, %0 : !cir.ptr<!ty_Yo>), !cir.ptr<!void>
// CHECK: cir.store %6, %5 : !cir.ptr<!void>, !cir.ptr<!cir.ptr<!void>>
// CHECK: %7 = cir.get_member %1[2] {name = "createFlags"} : !cir.ptr<!ty_22Yo22> -> !cir.ptr<!u64i>
// CHECK: %7 = cir.get_member %1[2] {name = "createFlags"} : !cir.ptr<!ty_Yo> -> !cir.ptr<!u64i>
// CHECK: %8 = cir.const #cir.int<0> : !u64i
// CHECK: cir.store %8, %7 : !u64i, !cir.ptr<!u64i>
8 changes: 4 additions & 4 deletions clang/test/CIR/CodeGen/agg-init2.cpp
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
// RUN: %clang_cc1 -triple x86_64-unknown-linux-gnu -std=c++17 -fclangir -Wno-unused-value -emit-cir %s -o %t.cir
// RUN: FileCheck --input-file=%t.cir %s

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

struct Zero {
void yolo();
Expand All @@ -14,7 +14,7 @@ void f() {
}

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