1 // RUN: %clang_cc1 -emit-llvm -debug-info-kind=standalone -triple %itanium_abi_triple %s -o - | FileCheck %s
3 // Not trivially copyable because of the explicit destructor.
4 // CHECK-DAG: !DICompositeType({{.*}}, name: "RefDtor",{{.*}}flags: DIFlagTypePassByReference
10 // Not trivially copyable because of the explicit copy constructor.
11 // CHECK-DAG: !DICompositeType({{.*}}, name: "RefCopy",{{.*}}flags: DIFlagTypePassByReference
15 RefCopy(RefCopy
&Copy
) {}
18 // POD-like type even though it defines a destructor.
19 // CHECK-DAG: !DICompositeType({{.*}}, name: "Podlike", {{.*}}flags: DIFlagTypePassByValue
23 Podlike(Podlike
&&Move
) = default;
28 // This is a POD type.
29 // CHECK-DAG: !DICompositeType({{.*}}, name: "Pod",{{.*}}flags: DIFlagTypePassByValue
34 // This is definitely not a POD type.
35 // CHECK-DAG: !DICompositeType({{.*}}, name: "Complex",{{.*}}flags: DIFlagTypePassByReference
38 Complex(Complex
&Copy
) : i(Copy
.i
) {};
42 // This type is manually marked as trivial_abi.
43 // CHECK-DAG: !DICompositeType({{.*}}, name: "Marked",{{.*}}flags: DIFlagTypePassByValue
44 struct __attribute__((trivial_abi
)) Marked
{
48 Marked(const Marked
&) noexcept
;
49 Marked
&operator=(const Marked
&);