// { dg-do compile { target arm_eabi } }
// { dg-require-dll "" }
// { dg-options "-fvisibility=hidden" }
// Most class data should be exported.
// { dg-final { scan-not-hidden "_ZTV1S" } }
// { dg-final { scan-not-hidden "_ZTI1S" } }
// { dg-final { scan-not-hidden "_ZTS1S" } }
// { dg-final { scan-not-hidden "_ZTV1U" } }
// { dg-final { scan-not-hidden "_ZTT1U" } }
// { dg-final { scan-not-hidden "_ZTI1U" } }
// { dg-final { scan-not-hidden "_ZTS1U" } }
// The construction vtable should be hidden.
// { dg-final { scan-hidden "_ZTC1U0_1T" } }

struct S {
  virtual void f();
};

void S::f() {
}

struct T : public virtual S {
  virtual void g();
};

struct U : public virtual T {
  virtual void h();
};

void U::h() {}
