// RUN: %clangxx -c -target %itanium_abi_triple -g %s -emit-llvm -S -o - | FileCheck %s // RUN: %clangxx -c -target %ms_abi_triple -g %s -emit-llvm -S -o - | FileCheck %s struct Foo { int A; Foo() : A(1){}; }; struct Bar { int B; Bar() : B(2){}; }; struct Baz { int C; Baz() : C(3){}; }; struct Qux { int d() { return 4; } Qux() {}; }; struct Quux { int E; Quux() : E(5){}; }; typedef int(Qux::*TD)(); typedef int(Qux::*TD1)(); int Val = reinterpret_cast<Baz *>(0)->C; int main() { Bar *PB = new Bar; TD d = &Qux::d; (void)reinterpret_cast<TD1>(d); return reinterpret_cast<Foo *>(PB)->A + reinterpret_cast<Quux *>(0)->E; } // CHECK-DAG: !DICompositeType(tag: DW_TAG_structure_type, name: "Foo", // CHECK-DAG: !DICompositeType(tag: DW_TAG_structure_type, name: "Bar", // CHECK-DAG: !DICompositeType(tag: DW_TAG_structure_type, name: "Baz", // CHECK-DAG: !DICompositeType(tag: DW_TAG_structure_type, name: "Qux", // CHECK-DAG: !DICompositeType(tag: DW_TAG_structure_type, name: "Quux", // CHECK-DAG: !DIDerivedType(tag: DW_TAG_typedef, name: "TD", // CHECK-DAG: !DIDerivedType(tag: DW_TAG_typedef, name: "TD1",