brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.5 KiB · d4d4046 Raw
51 lines · cpp
1// RUN: %clang_cc1 -emit-llvm -debug-info-kind=standalone -triple %itanium_abi_triple %s -o - | FileCheck %s2 3// Not trivially copyable because of the explicit destructor.4// CHECK-DAG: !DICompositeType({{.*}}, name: "RefDtor",{{.*}}flags: DIFlagTypePassByReference5struct RefDtor {6  int i;7  ~RefDtor() {}8} refDtor;9 10// Not trivially copyable because of the explicit copy constructor.11// CHECK-DAG: !DICompositeType({{.*}}, name: "RefCopy",{{.*}}flags: DIFlagTypePassByReference12struct RefCopy {13  int i;14  RefCopy() = default;15  RefCopy(RefCopy &Copy) {}16} refCopy;17 18// POD-like type even though it defines a destructor.19// CHECK-DAG: !DICompositeType({{.*}}, name: "Podlike", {{.*}}flags: DIFlagTypePassByValue20struct Podlike {21  int i;22  Podlike() = default;23  Podlike(Podlike &&Move) = default;24  ~Podlike() = default;25} podlike;26 27 28// This is a POD type.29// CHECK-DAG: !DICompositeType({{.*}}, name: "Pod",{{.*}}flags: DIFlagTypePassByValue30struct Pod {31  int i;32} pod;33 34// This is definitely not a POD type.35// CHECK-DAG: !DICompositeType({{.*}}, name: "Complex",{{.*}}flags: DIFlagTypePassByReference36struct Complex {37  Complex() {}38  Complex(Complex &Copy) : i(Copy.i) {};39  int i;40} complex;41 42// This type is manually marked as trivial_abi.43// CHECK-DAG: !DICompositeType({{.*}}, name: "Marked",{{.*}}flags: DIFlagTypePassByValue44struct __attribute__((trivial_abi)) Marked {45  int *p;46  Marked();47  ~Marked();48  Marked(const Marked &) noexcept;49  Marked &operator=(const Marked &);50} marked;51