brintos

brintos / llvm-project-archived public Read only

0
0
Text · 2.6 KiB · 3952226 Raw
81 lines · cpp
1// RUN: %clang_cc1 -fno-rtti -triple i686-pc-win32 -fdump-record-layouts -fms-extensions -fsyntax-only %s 2>&1 | FileCheck %s2 3struct __single_inheritance S;4struct __multiple_inheritance M;5struct __virtual_inheritance V;6struct U;7 8struct SD { char a; int S::*mp; };9struct MD { char a; int M::*mp; };10struct VD { char a; int V::*mp; };11struct UD { char a; int U::*mp; };12struct SF { char a; int (S::*mp)(); };13struct MF { char a; int (M::*mp)(); };14struct VF { char a; int (V::*mp)(); };15struct UF { char a; int (U::*mp)(); };16 17// CHECK: *** Dumping AST Record Layout18// CHECK-NEXT:    0 | struct SD19// CHECK-NEXT:    0 |   char a20// CHECK-NEXT:    4 |   int S::* mp21// CHECK-NEXT:      | [sizeof=8, align=422// CHECK-NEXT:      |  nvsize=8, nvalign=4]23 24// CHECK: *** Dumping AST Record Layout25// CHECK-NEXT:    0 | struct MD26// CHECK-NEXT:    0 |   char a27// CHECK-NEXT:    4 |   int M::* mp28// CHECK-NEXT:      | [sizeof=8, align=429// CHECK-NEXT:      |  nvsize=8, nvalign=4]30 31// CHECK: *** Dumping AST Record Layout32// CHECK-NEXT:    0 | struct VD33// CHECK-NEXT:    0 |   char a34// CHECK-NEXT:    8 |   int V::* mp35// CHECK-NEXT:      | [sizeof=16, align=836// CHECK-NEXT:      |  nvsize=16, nvalign=8]37 38// CHECK: *** Dumping AST Record Layout39// CHECK-NEXT:    0 | struct UD40// CHECK-NEXT:    0 |   char a41// CHECK-NEXT:    8 |   int U::* mp42// CHECK-NEXT:      | [sizeof=24, align=843// CHECK-NEXT:      |  nvsize=24, nvalign=8]44 45// CHECK: *** Dumping AST Record Layout46// CHECK-NEXT:    0 | struct SF47// CHECK-NEXT:    0 |   char a48// CHECK-NEXT:    4 |   int (S::*)(void) __attribute__((thiscall)) mp49// CHECK-NEXT:      | [sizeof=8, align=450// CHECK-NEXT:      |  nvsize=8, nvalign=4]51 52// CHECK: *** Dumping AST Record Layout53// CHECK-NEXT:    0 | struct MF54// CHECK-NEXT:    0 |   char a55// CHECK-NEXT:    8 |   int (M::*)(void) __attribute__((thiscall)) mp56// CHECK-NEXT:      | [sizeof=16, align=857// CHECK-NEXT:      |  nvsize=16, nvalign=8]58 59// CHECK: *** Dumping AST Record Layout60// CHECK-NEXT:    0 | struct VF61// CHECK-NEXT:    0 |   char a62// CHECK-NEXT:    8 |   int (V::*)(void) __attribute__((thiscall)) mp63// CHECK-NEXT:      | [sizeof=24, align=864// CHECK-NEXT:      |  nvsize=24, nvalign=8]65 66// CHECK: *** Dumping AST Record Layout67// CHECK-NEXT:    0 | struct UF68// CHECK-NEXT:    0 |   char a69// CHECK-NEXT:    8 |   int (U::*)(void) __attribute__((thiscall)) mp70// CHECK-NEXT:      | [sizeof=24, align=871// CHECK-NEXT:      |  nvsize=24, nvalign=8]72 73char a[sizeof(SD) +74       sizeof(MD) +75       sizeof(VD) +76       sizeof(UD) +77       sizeof(SF) +78       sizeof(MF) +79       sizeof(VF) +80       sizeof(UF)];81