1/* { dg-do compile } */ 2/* { dg-require-visibility "" } */ 3 4typedef enum {} UErrorCode; 5class A { 6public: 7 virtual A &m_fn1(A &, const A &, UErrorCode &) const; 8 void m_fn2(); 9 A(); 10 A(int); 11}; 12class __attribute__((visibility("hidden"))) B : public A { 13public: 14 B(A &p1) : norm2(p1), set(0) {} 15 A &m_fn1(A &, const A &, UErrorCode &) const; 16 A &norm2; 17 const int &set; 18}; 19 20UErrorCode a; 21A c; 22void fn1(A *p1) { 23 A b; 24 p1->m_fn1(b, 0, a).m_fn2(); 25} 26 27void fn2() { 28 B d(c); 29 fn1(&d); 30} 31