brintos

brintos / llvm-project-archived public Read only

0
0
Text · 872 B · 85022fc Raw
36 lines · cpp
1// RUN: %clang_cc1 %s -fno-rtti -triple=i386-pc-win32 -emit-llvm -o %t.ll -fdump-vtable-layouts >%t2// RUN: FileCheck %s < %t3// RUN: FileCheck --check-prefix=MANGLING %s < %t.ll4 5struct A {6  virtual void f();7};8 9struct B {10  virtual void g() = 0;11  virtual void h();12};13 14struct C : A, B {15  // CHECK-LABEL: VFTable for 'A' in 'C' (1 entry)16  // CHECK-NEXT:   0 | void A::f()17 18  // CHECK-LABEL: VFTable for 'B' in 'C' (2 entries)19  // CHECK-NEXT:   0 | void C::g()20  // CHECK-NEXT:   1 | void B::h()21 22  // CHECK-LABEL: VFTable indices for 'C' (1 entry).23  // CHECK-NEXT:   via vfptr at offset 424  // CHECK-NEXT:   0 | void C::g()25 26  // MANGLING-DAG: @"??_7C@@6BA@@@"27  // MANGLING-DAG: @"??_7C@@6BB@@@"28 29  // Overrides only the right child's method (B::g),30  // needs this adjustment but not thunks.31  virtual void g();32};33 34C c;35void build_vftable(C *obj) { obj->g(); }36