diff options
Diffstat (limited to 'clang/test/Layout/ms-x86-alias-avoidance-padding.cpp')
-rw-r--r-- | clang/test/Layout/ms-x86-alias-avoidance-padding.cpp | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/clang/test/Layout/ms-x86-alias-avoidance-padding.cpp b/clang/test/Layout/ms-x86-alias-avoidance-padding.cpp index 48249137017..3112b39c9bc 100644 --- a/clang/test/Layout/ms-x86-alias-avoidance-padding.cpp +++ b/clang/test/Layout/ms-x86-alias-avoidance-padding.cpp @@ -255,10 +255,54 @@ struct F : virtual D, virtual B {}; // CHECK-X64-NEXT: | [sizeof=32, align=8 // CHECK-X64-NEXT: | nvsize=8, nvalign=8] +struct JC0 { + JC0() { printf("JC0 : %d\n", (int)((char*)this - buffer)); } +}; +struct JC1 : JC0 { + virtual void f() {} + JC1() { printf("JC1 : %d\n", (int)((char*)this - buffer)); } +}; +struct JC2 : JC1 { + JC2() { printf("JC2 : %d\n", (int)((char*)this - buffer)); } +}; +struct JC4 : JC1, JC2 { + JC4() { printf("JC4 : %d\n", (int)((char*)this - buffer)); } +}; + +// CHECK: *** Dumping AST Record Layout +// CHECK: *** Dumping AST Record Layout +// CHECK: *** Dumping AST Record Layout +// CHECK: *** Dumping AST Record Layout +// CHECK-NEXT: 0 | struct JC4 +// CHECK-NEXT: 0 | struct JC1 (primary base) +// CHECK-NEXT: 0 | (JC1 vftable pointer) +// CHECK-NEXT: 4 | struct JC0 (base) (empty) +// CHECK-NEXT: 8 | struct JC2 (base) +// CHECK-NEXT: 8 | struct JC1 (primary base) +// CHECK-NEXT: 8 | (JC1 vftable pointer) +// CHECK-NEXT: 12 | struct JC0 (base) (empty) +// CHECK-NEXT: | [sizeof=12, align=4 +// CHECK-NEXT: | nvsize=12, 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 JC4 +// CHECK-x64-NEXT: 0 | struct JC1 (primary base) +// CHECK-x64-NEXT: 0 | (JC1 vftable pointer) +// CHECK-x64-NEXT: 8 | struct JC0 (base) (empty) +// CHECK-x64-NEXT: 16 | struct JC2 (base) +// CHECK-x64-NEXT: 16 | struct JC1 (primary base) +// CHECK-x64-NEXT: 16 | (JC1 vftable pointer) +// CHECK-x64-NEXT: 24 | struct JC0 (base) (empty) +// CHECK-x64-NEXT: | [sizeof=24, align=8 +// CHECK-x64-NEXT: | nvsize=24, nvalign=8] + int a[ sizeof(AT3) + sizeof(BT3) + sizeof(T3) + sizeof(E) + sizeof(F) + +sizeof(JC4) + 0]; |