1 // RUN: %clangxx -c -target %itanium_abi_triple -g %s -emit-llvm -S -o - | FileCheck %s 2 // RUN: %clangxx -c -target %ms_abi_triple -g %s -emit-llvm -S -o - | FileCheck %s 3 4 struct Foo { 5 int A; 6 Foo() : A(1){}; 7 }; 8 9 struct Bar { 10 int B; 11 Bar() : B(2){}; 12 }; 13 14 struct Baz { 15 int C; 16 Baz() : C(3){}; 17 }; 18 19 struct Qux { 20 int d() { return 4; } 21 Qux() {}; 22 }; 23 24 struct Quux { 25 int E; 26 Quux() : E(5){}; 27 }; 28 29 typedef int(Qux::*TD)(); 30 typedef int(Qux::*TD1)(); 31 int Val = reinterpret_cast<Baz *>(0)->C; 32 int main() { 33 Bar *PB = new Bar; 34 TD d = &Qux::d; 35 (void)reinterpret_cast<TD1>(d); 36 37 return reinterpret_cast<Foo *>(PB)->A + reinterpret_cast<Quux *>(0)->E; 38 } 39 40 // CHECK-DAG: !DICompositeType(tag: DW_TAG_structure_type, name: "Foo", 41 // CHECK-DAG: !DICompositeType(tag: DW_TAG_structure_type, name: "Bar", 42 // CHECK-DAG: !DICompositeType(tag: DW_TAG_structure_type, name: "Baz", 43 // CHECK-DAG: !DICompositeType(tag: DW_TAG_structure_type, name: "Qux", 44 // CHECK-DAG: !DICompositeType(tag: DW_TAG_structure_type, name: "Quux", 45 // CHECK-DAG: !DIDerivedType(tag: DW_TAG_typedef, name: "TD", 46 // CHECK-DAG: !DIDerivedType(tag: DW_TAG_typedef, name: "TD1", 47