diff options
Diffstat (limited to 'clang/test')
-rw-r--r-- | clang/test/CodeGenCXX/vtable-layout-abi-examples.cpp | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/clang/test/CodeGenCXX/vtable-layout-abi-examples.cpp b/clang/test/CodeGenCXX/vtable-layout-abi-examples.cpp index 5dabe29a213..94e9cd3f115 100644 --- a/clang/test/CodeGenCXX/vtable-layout-abi-examples.cpp +++ b/clang/test/CodeGenCXX/vtable-layout-abi-examples.cpp @@ -71,4 +71,38 @@ struct C: public virtual A { int ic; }; void C::g() {} + +// CHECK: Vtable for 'Test1::D' (18 entries). +// CHECK-NEXT: 0 | vbase_offset (32) +// CHECK-NEXT: 1 | offset_to_top (0) +// CHECK-NEXT: 2 | Test1::D RTTI +// CHECK-NEXT: -- (Test1::B, 0) vtable address -- +// CHECK-NEXT: -- (Test1::D, 0) vtable address -- +// CHECK-NEXT: 3 | void Test1::B::f() +// CHECK-NEXT: 4 | void Test1::D::h() +// CHECK-NEXT: 5 | vbase_offset (16) +// CHECK-NEXT: 6 | offset_to_top (-16) +// CHECK-NEXT: 7 | Test1::D RTTI +// CHECK-NEXT: -- (Test1::C, 16) vtable address -- +// CHECK-NEXT: 8 | void Test1::C::g() +// CHECK-NEXT: 9 | void Test1::D::h() +// CHECK-NEXT: [this adjustment: -16 non-virtual] +// CHECK-NEXT: 10 | vcall_offset (-32) +// CHECK-NEXT: 11 | vcall_offset (-16) +// CHECK-NEXT: 12 | vcall_offset (-32) +// CHECK-NEXT: 13 | offset_to_top (-32) +// CHECK-NEXT: 14 | Test1::D RTTI +// CHECK-NEXT: -- (Test1::A, 32) vtable address -- +// CHECK-NEXT: 15 | void Test1::B::f() +// CHECK-NEXT: [this adjustment: 0 non-virtual, -24 vcall offset offset] +// CHECK-NEXT: 16 | void Test1::C::g() +// CHECK-NEXT: [this adjustment: 0 non-virtual, -32 vcall offset offset] +// CHECK-NEXT: 17 | void Test1::D::h() +// CHECK-NEXT: [this adjustment: 0 non-virtual, -40 vcall offset offset] +struct D: public B, public C { + void h (); + int id; +}; +void D::h() { } + } |