debug-info-class.cpp revision 152701b54acf1e09ec4e7c6d6cb16fe6d82e23c6
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 A { 42 int one; 43 static const int HdrSize = 52; 44 int two; 45 A() { 46 int x = 1; 47 } 48}; 49 50void f1() { 51 D x; 52 x.func(); 53 E y; 54} 55 56int main(int argc, char **argv) { 57 B b; 58 if (argc) { 59 A a; 60 } 61 return 0; 62} 63 64// RUN: %clang -target x86_64-unknown_unknown -emit-llvm -g -S %s -o - | FileCheck %s 65// RUN: %clang -target i686-cygwin -emit-llvm -g -S %s -o - | FileCheck %s 66// RUN: %clang -target armv7l-unknown-linux-gnueabihf -emit-llvm -g -S %s -o - | FileCheck %s 67 68// CHECK: invoke {{.+}} @_ZN1BD1Ev(%class.B* %b) 69// CHECK-NEXT: unwind label %{{.+}}, !dbg ![[EXCEPTLOC:.*]] 70// CHECK: store i32 0, i32* %{{.+}}, !dbg ![[RETLOC:.*]] 71// CHECK: DW_TAG_structure_type ] [foo] 72// CHECK: DW_TAG_class_type ] [bar] 73// CHECK: DW_TAG_union_type ] [baz] 74// CHECK: DW_TAG_class_type ] [B] 75// CHECK: metadata !"_vptr$B", {{.*}}, i32 64, metadata !{{.*}}} ; [ DW_TAG_member ] 76 77// CHECK: [[C:![0-9]*]] = {{.*}} metadata [[C_MEM:![0-9]*]], i32 0, metadata [[C]], null} ; [ DW_TAG_structure_type ] [C] {{.*}} [def] 78// CHECK: [[C_MEM]] = metadata !{metadata [[C_VPTR:![0-9]*]], metadata [[C_S:![0-9]*]], metadata [[C_DTOR:![0-9]*]]} 79// CHECK: [[C_VPTR]] = {{.*}} ; [ DW_TAG_member ] [_vptr$C] {{.*}} [artificial] 80// CHECK: [[C_S]] = {{.*}} ; [ DW_TAG_member ] [s] {{.*}} [static] [from int] 81// CHECK: [[C_DTOR]] = {{.*}} ; [ DW_TAG_subprogram ] {{.*}} [~C] 82 83// CHECK: ; [ DW_TAG_structure_type ] [A] 84// CHECK: HdrSize 85// CHECK: metadata [[D_MEM:![0-9]*]], i32 0, null} ; [ DW_TAG_structure_type ] [D] {{.*}} [decl] 86// CHECK: [[D_MEM]] = metadata !{metadata [[D_FUNC:![0-9]*]]} 87// CHECK: [[D_FUNC]] = {{.*}} ; [ DW_TAG_subprogram ] {{.*}} [func] 88// CHECK: null, i32 0, null} ; [ DW_TAG_structure_type ] [E] {{.*}} [decl] 89// CHECK: ![[EXCEPTLOC]] = metadata !{i32 62, 90// CHECK: ![[RETLOC]] = metadata !{i32 61, 91