summaryrefslogtreecommitdiff
path: root/gcc/testsuite/g++.dg/torture/pr60058.C
blob: 1144137cb91831155690747de097a11d65a63380 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
/* { 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);
}