You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
77 lines
1.2 KiB
77 lines
1.2 KiB
4 months ago
|
// RUN: %clang_cc1 -triple %itanium_abi_triple -std=c++11 -emit-llvm %s -o - | FileCheck %s
|
||
|
|
||
|
struct A {
|
||
|
A(); A(const A&); A(A&&); A &operator=(const A&); A &operator=(A&&); ~A();
|
||
|
};
|
||
|
struct B {
|
||
|
B(); B(const B&); B(B&&); B &operator=(const B&); B &operator=(B&&); ~B();
|
||
|
};
|
||
|
|
||
|
union U {
|
||
|
U();
|
||
|
U(const U &);
|
||
|
U(U &&);
|
||
|
U &operator=(const U&);
|
||
|
U &operator=(U&&);
|
||
|
~U();
|
||
|
|
||
|
A a;
|
||
|
int n;
|
||
|
};
|
||
|
|
||
|
// CHECK-NOT: _ZN1A
|
||
|
U::U() {}
|
||
|
U::U(const U&) {}
|
||
|
U::U(U&&) {}
|
||
|
U &U::operator=(const U&) { return *this; }
|
||
|
U &U::operator=(U &&) { return *this; }
|
||
|
U::~U() {}
|
||
|
|
||
|
struct S {
|
||
|
S();
|
||
|
S(const S &);
|
||
|
S(S &&);
|
||
|
S &operator=(const S&);
|
||
|
S &operator=(S&&);
|
||
|
~S();
|
||
|
|
||
|
union {
|
||
|
A a;
|
||
|
int n;
|
||
|
};
|
||
|
B b;
|
||
|
int m;
|
||
|
};
|
||
|
|
||
|
// CHECK: _ZN1SC2Ev
|
||
|
// CHECK-NOT: _ZN1A
|
||
|
// CHECK: _ZN1BC1Ev
|
||
|
S::S() {}
|
||
|
|
||
|
// CHECK-NOT: _ZN1A
|
||
|
|
||
|
// CHECK: _ZN1SC2ERKS_
|
||
|
// CHECK-NOT: _ZN1A
|
||
|
// CHECK: _ZN1BC1Ev
|
||
|
S::S(const S&) {}
|
||
|
|
||
|
// CHECK-NOT: _ZN1A
|
||
|
|
||
|
// CHECK: _ZN1SC2EOS_
|
||
|
// CHECK-NOT: _ZN1A
|
||
|
// CHECK: _ZN1BC1Ev
|
||
|
S::S(S&&) {}
|
||
|
|
||
|
// CHECK-NOT: _ZN1A
|
||
|
// CHECK-NOT: _ZN1B
|
||
|
S &S::operator=(const S&) { return *this; }
|
||
|
|
||
|
S &S::operator=(S &&) { return *this; }
|
||
|
|
||
|
// CHECK: _ZN1SD2Ev
|
||
|
// CHECK-NOT: _ZN1A
|
||
|
// CHECK: _ZN1BD1Ev
|
||
|
S::~S() {}
|
||
|
|
||
|
// CHECK-NOT: _ZN1A
|