brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.1 KiB · 028a776 Raw
47 lines · cpp
1// RUN: %clangxx -c -target %itanium_abi_triple -g %s -emit-llvm -S -o - | FileCheck %s2// RUN: %clangxx -c -target %ms_abi_triple -g %s -emit-llvm -S -o - | FileCheck %s3 4struct Foo {5  int A;6  Foo() : A(1){};7};8 9struct Bar {10  int B;11  Bar() : B(2){};12};13 14struct Baz {15  int C;16  Baz() : C(3){};17};18 19struct Qux {20  int d() { return 4; }21  Qux() {};22};23 24struct Quux {25  int E;26  Quux() : E(5){};27};28 29typedef int(Qux::*TD)();30typedef int(Qux::*TD1)();31int Val = reinterpret_cast<Baz *>(0)->C;32int 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