| struct foo; |
| void func(foo *f) { |
| } |
| class bar; |
| void func(bar *f) { |
| } |
| union baz; |
| void func(baz *f) { |
| } |
| |
| class B { |
| public: |
| virtual ~B(); |
| }; |
| struct A { |
| int one; |
| static const int HdrSize = 52; |
| int two; |
| A() { |
| int x = 1; |
| } |
| }; |
| |
| |
| int main(int argc, char **argv) { |
| B b; |
| if (argc) { |
| A a; |
| } |
| return 0; |
| } |
| |
| // RUN: %clang -target x86_64-unknown_unknown -emit-llvm -g -S %s -o - | FileCheck %s |
| // RUN: %clang -target i686-cygwin -emit-llvm -g -S %s -o - | FileCheck %s |
| // RUN: %clang -target armv7l-unknown-linux-gnueabihf -emit-llvm -g -S %s -o - | FileCheck %s |
| |
| // CHECK: invoke {{.+}} @_ZN1BD1Ev(%class.B* %b) |
| // CHECK-NEXT: unwind label %{{.+}}, !dbg ![[EXCEPTLOC:.*]] |
| // CHECK: store i32 0, i32* %{{.+}}, !dbg ![[RETLOC:.*]] |
| // CHECK: DW_TAG_structure_type ] [foo] |
| // CHECK: DW_TAG_class_type ] [bar] |
| // CHECK: DW_TAG_union_type ] [baz] |
| // CHECK: DW_TAG_structure_type ] [A] |
| // CHECK: HdrSize |
| // CHECK: DW_TAG_class_type ] [B] |
| // CHECK: metadata !"_vptr$B", {{.*}}, i32 64, metadata !{{.*}}} ; [ DW_TAG_member ] |
| // CHECK: ![[EXCEPTLOC]] = metadata !{i32 31, |
| // CHECK: ![[RETLOC]] = metadata !{i32 30, |