/* { dg-do compile } */ /* { dg-require-visibility "" } */ typedef enum {} UErrorCode; class A { public: virtual A &m_fn1(A &, const A &, UErrorCode &) const; void m_fn2(); A(); A(int); }; class __attribute__((visibility("hidden"))) B : public A { public: B(A &p1) : norm2(p1), set(0) {} A &m_fn1(A &, const A &, UErrorCode &) const; A &norm2; const int &set; }; UErrorCode a; A c; void fn1(A *p1) { A b; p1->m_fn1(b, 0, a).m_fn2(); } void fn2() { B d(c); fn1(&d); }