1 struct foo; 2 void func(foo *f) { 3 } 4 class bar; 5 void func(bar *f) { 6 } 7 union baz; 8 void func(baz *f) { 9 } 10 11 class B { 12 public: 13 virtual ~B(); 14 }; 15 16 B::~B() { 17 } 18 19 struct C { 20 static int s; 21 virtual ~C(); 22 }; 23 24 C::~C() { 25 } 26 27 struct D { 28 D(); 29 virtual ~D(); 30 void func() { 31 } 32 }; 33 34 struct E { 35 E(); 36 virtual ~E(); 37 virtual void func() { 38 } 39 }; 40 41 struct A { 42 int one; 43 static const int HdrSize = 52; 44 int two; 45 A() { 46 int x = 1; 47 } 48 }; 49 50 void f1() { 51 D x; 52 x.func(); 53 E y; 54 } 55 56 int 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