blob: 8432df4e15af924d883f199ba73f25b4893003e6 [file] [log] [blame]
// RUN: %clang_cc1 -triple x86_64-unknown-linux-gnu -fclangir -emit-cir %s -o %t.cir
// RUN: FileCheck --input-file=%t.cir %s
class A {
public:
A(): x(0) {}
A(A &a) : x(a.x) {}
// TODO(cir): Ensure dtors are properly called. The dtor below crashes.
// ~A() {}
int x;
void Foo() {}
};
void test1() {
({
A a;
a;
}).Foo();
}
// CHECK: @_Z5test1v
// CHECK: cir.scope {
// CHECK: %[[#RETVAL:]] = cir.alloca !ty_A, !cir.ptr<!ty_A>
// CHECK: cir.scope {
// CHECK: %[[#VAR:]] = cir.alloca !ty_A, !cir.ptr<!ty_A>, ["a", init] {alignment = 4 : i64}
// CHECK: cir.call @_ZN1AC1Ev(%[[#VAR]]) : (!cir.ptr<!ty_A>) -> ()
// CHECK: cir.call @_ZN1AC1ERS_(%[[#RETVAL]], %[[#VAR]]) : (!cir.ptr<!ty_A>, !cir.ptr<!ty_A>) -> ()
// TODO(cir): the local VAR should be destroyed here.
// CHECK: }
// CHECK: cir.call @_ZN1A3FooEv(%[[#RETVAL]]) : (!cir.ptr<!ty_A>) -> ()
// TODO(cir): the temporary RETVAL should be destroyed here.
// CHECK: }