Alexey Bataev | 2bf9b4c | 2015-10-20 04:24:12 +0000 | [diff] [blame] | 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", |