1struct foo; 2void func(foo *f) { 3} 4class bar; 5void func(bar *f) { 6} 7union baz; 8void func(baz *f) { 9} 10 11class B { 12public: 13 virtual ~B(); 14}; 15 16B::~B() { 17} 18 19struct C { 20 static int s; 21 virtual ~C(); 22}; 23 24C::~C() { 25} 26 27struct D { 28 D(); 29 virtual ~D(); 30 void func() { 31 } 32}; 33 34struct E { 35 E(); 36 virtual ~E(); 37 virtual void func() { 38 } 39}; 40 41struct F { 42 struct inner { 43 }; 44 static const int i = 2; 45 virtual ~F(); 46}; 47 48struct G { 49 virtual void func(); 50 struct inner { 51 int j; 52 }; 53}; 54 55struct H {}; 56struct I : virtual H {}; 57struct J : I {}; 58J j; 59 60struct A { 61 int one; 62 static const int HdrSize = 52; 63 int two; 64 A() { 65 int x = 1; 66 } 67}; 68 69void f1() { 70 D x; 71 x.func(); 72 E y; 73 int i = F::i; 74 F::inner z; 75} 76 77int main(int argc, char **argv) { 78 B b; 79 G::inner c_i; 80 if (argc) { 81 A a; 82 } 83 return 0; 84} 85 86// RUN: %clang_cc1 -triple x86_64-unknown_unknown -emit-llvm -debug-info-kind=limited -fexceptions %s -o - | FileCheck %s 87// RUN: %clang_cc1 -triple i686-cygwin -emit-llvm -debug-info-kind=limited -fexceptions %s -o - | FileCheck %s 88// RUN: %clang_cc1 -triple armv7l-unknown-linux-gnueabihf -emit-llvm -debug-info-kind=limited -fexceptions %s -o - | FileCheck %s 89 90// CHECK: invoke {{.+}} @_ZN1BD1Ev(%class.B* %b) 91// CHECK-NEXT: unwind label %{{.+}}, !dbg ![[EXCEPTLOC:.*]] 92// CHECK: store i32 0, i32* %{{.+}}, !dbg ![[RETLOC:.*]] 93 94// CHECK: [[F:![0-9]*]] = !DICompositeType(tag: DW_TAG_structure_type, name: "F" 95// CHECK-SAME: DIFlagFwdDecl 96// CHECK-SAME: identifier: "_ZTS1F" 97// CHECK: !DICompositeType(tag: DW_TAG_structure_type, name: "I" 98// CHECK-NOT: DIFlagFwdDecl 99// CHECK-SAME: ){{$}} 100 101// CHECK: ![[INT:[0-9]+]] = !DIBasicType(name: "int" 102// CHECK: !DICompositeType(tag: DW_TAG_structure_type, name: "foo" 103// CHECK: !DICompositeType(tag: DW_TAG_class_type, name: "bar" 104// CHECK: !DICompositeType(tag: DW_TAG_union_type, name: "baz" 105// CHECK: !DICompositeType(tag: DW_TAG_class_type, name: "B" 106// CHECK-NOT: DIFlagFwdDecl 107// CHECK-SAME: ){{$}} 108// CHECK: !DIDerivedType(tag: DW_TAG_member, name: "_vptr$B", 109// CHECK-SAME: DIFlagArtificial 110 111// CHECK: [[C:![0-9]*]] = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "C", 112// CHECK-NOT: DIFlagFwdDecl 113// CHECK-SAME: elements: [[C_MEM:![0-9]*]] 114// CHECK-SAME: vtableHolder: [[C]] 115// CHECK-SAME: identifier: "_ZTS1C" 116// CHECK: [[C_MEM]] = !{[[C_VPTR:![0-9]*]], [[C_S:![0-9]*]], [[C_DTOR:![0-9]*]]} 117// CHECK: [[C_VPTR]] = !DIDerivedType(tag: DW_TAG_member, name: "_vptr$C" 118// CHECK-SAME: DIFlagArtificial 119// CHECK: [[C_S]] = !DIDerivedType(tag: DW_TAG_member, name: "s" 120// CHECK-SAME: baseType: ![[INT]] 121// CHECK-SAME: DIFlagStaticMember 122// CHECK: [[C_DTOR]] = !DISubprogram(name: "~C" 123 124// CHECK: [[D:![0-9]+]] = !DICompositeType(tag: DW_TAG_structure_type, name: "D" 125// CHECK-SAME: DIFlagFwdDecl 126// CHECK-SAME: identifier: "_ZTS1D" 127// CHECK: !DICompositeType(tag: DW_TAG_structure_type, name: "E" 128// CHECK-SAME: DIFlagFwdDecl 129// CHECK-SAME: identifier: "_ZTS1E" 130 131// CHECK: !DISubprogram(name: "func",{{.*}} scope: [[D]] 132// CHECK-SAME: isDefinition: true 133// CHECK-SAME: declaration: [[D_FUNC_DECL:![0-9]*]] 134// CHECK: [[D_FUNC_DECL]] = !DISubprogram(name: "func",{{.*}} scope: [[D]] 135// CHECK-SAME: isDefinition: false 136 137// CHECK: !DICompositeType(tag: DW_TAG_structure_type, name: "inner",{{.*}} line: 50 138// CHECK-NOT: DIFlagFwdDecl 139// CHECK-SAME: elements: [[G_INNER_MEM:![0-9]*]] 140// CHECK-SAME: identifier: "_ZTSN1G5innerE" 141 142// CHECK: !DICompositeType(tag: DW_TAG_structure_type, name: "G" 143// CHECK-SAME: DIFlagFwdDecl 144// CHECK-SAME: identifier: "_ZTS1G" 145// CHECK: [[G_INNER_MEM]] = !{[[G_INNER_I:![0-9]*]]} 146// CHECK: [[G_INNER_I]] = !DIDerivedType(tag: DW_TAG_member, name: "j" 147// CHECK-SAME: baseType: ![[INT]] 148 149// CHECK: !DICompositeType(tag: DW_TAG_structure_type, name: "A" 150// CHECK: !DIDerivedType(tag: DW_TAG_member, name: "HdrSize" 151// 152// CHECK: ![[EXCEPTLOC]] = !DILocation(line: 84, 153// CHECK: ![[RETLOC]] = !DILocation(line: 83, 154