llvm-for-llvmta/tools/clang/test/CodeGenCXX/RelativeVTablesABI/thunk-mangling.cpp

32 lines
873 B
C++

// Check that virtual thunks are unaffected by the relative ABI.
// The offset of thunks is mangled into the symbol name, which could result in
// linking errors for binaries that want to look for symbols in SOs made with
// this ABI.
// Running that linked binary still won't work since we're using conflicting
// ABIs, but we should still be able to link.
// RUN: %clang_cc1 %s -triple=aarch64-unknown-fuchsia -O1 -S -o - -emit-llvm -fexperimental-relative-c++-abi-vtables | FileCheck %s
// This would be normally n24 (3 ptr widths) but is 12 since the vtable is
// entierely made of i32s now.
// CHECK: _ZTv0_n12_N7Derived1fEi
class Base {
public:
virtual int f(int x);
private:
long x;
};
class Derived : public virtual Base {
public:
virtual int f(int x);
private:
long y;
};
int Base::f(int x) { return x + 1; }
int Derived::f(int x) { return x + 2; }