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