diff options
Diffstat (limited to 'clang/test/Layout/ms-x86-empty-virtual-base.cpp')
-rw-r--r-- | clang/test/Layout/ms-x86-empty-virtual-base.cpp | 37 |
1 files changed, 36 insertions, 1 deletions
diff --git a/clang/test/Layout/ms-x86-empty-virtual-base.cpp b/clang/test/Layout/ms-x86-empty-virtual-base.cpp index 819246ee2ae..267f82afef7 100644 --- a/clang/test/Layout/ms-x86-empty-virtual-base.cpp +++ b/clang/test/Layout/ms-x86-empty-virtual-base.cpp @@ -730,6 +730,40 @@ struct T3 : virtual T1, virtual T0 { long long a; }; // CHECK-X64-NEXT: | [sizeof=24, align=8 // CHECK-X64-NEXT: | nvsize=16, nvalign=8] +struct Q0A {}; +struct Q0B { char Q0BField; }; +struct Q0C : virtual Q0A, virtual Q0B { char Q0CField; }; +struct Q0D : Q0C, Q0A {}; + +// CHECK: *** Dumping AST Record Layout +// CHECK: *** Dumping AST Record Layout +// CHECK: *** Dumping AST Record Layout +// CHECK: *** Dumping AST Record Layout +// CHECK-NEXT: 0 | struct Q0D +// CHECK-NEXT: 0 | struct Q0C (base) +// CHECK-NEXT: 0 | (Q0C vbtable pointer) +// CHECK-NEXT: 4 | char Q0CField +// CHECK-NEXT: 8 | struct Q0A (base) (empty) +// CHECK-NEXT: 8 | struct Q0A (virtual base) (empty) +// CHECK-NEXT: 8 | struct Q0B (virtual base) +// CHECK-NEXT: 8 | char Q0BField +// CHECK-NEXT: | [sizeof=9, align=4 +// CHECK-NEXT: | nvsize=8, nvalign=4] +// CHECK-X64: *** Dumping AST Record Layout +// CHECK-X64: *** Dumping AST Record Layout +// CHECK-X64: *** Dumping AST Record Layout +// CHECK-X64: *** Dumping AST Record Layout +// CHECK-X64-NEXT: 0 | struct Q0D +// CHECK-X64-NEXT: 0 | struct Q0C (base) +// CHECK-X64-NEXT: 0 | (Q0C vbtable pointer) +// CHECK-X64-NEXT: 8 | char Q0CField +// CHECK-X64-NEXT: 16 | struct Q0A (base) (empty) +// CHECK-X64-NEXT: 16 | struct Q0A (virtual base) (empty) +// CHECK-X64-NEXT: 16 | struct Q0B (virtual base) +// CHECK-X64-NEXT: 16 | char Q0BField +// CHECK-X64-NEXT: | [sizeof=24, align=8 +// CHECK-X64-NEXT: | nvsize=16, nvalign=8] + int a[ sizeof(A)+ sizeof(B)+ @@ -753,4 +787,5 @@ sizeof(S)+ sizeof(T)+ sizeof(U)+ sizeof(V)+ -sizeof(T3)]; +sizeof(T3)+ +sizeof(Q0D)]; |