// 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 | 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; }
