1 // PR middle-end/87916
2 // Testcase by Martin Liška <marxin@gcc.gnu.org>
3
4 // { dg-do compile }
5 // { dg-options "-O2 -g" }
6 // { dg-additional-options "-fPIC" { target fpic } }
7
8 struct a {
9 virtual ~a();
10 };
11 template <typename b> class c {
12 public:
13 class d {
14 public:
15 d(c);
16 b *operator->();
17 };
18 };
19 int e, f;
20 class g {
21 public:
22 class h {
23 public:
24 virtual void j(g &, int &, bool) = 0;
25 };
26 c<h> k();
27 int *l();
28 int *m();
29 };
l()30 int *g::l() try {
31 for (c<h>::d i(k());;)
32 i->j(*this, e, true);
33 } catch (int) {
34 return 0;
35 }
m()36 int *g::m() try {
37 for (c<h>::d i(k());;)
38 i->j(*this, f, false);
39 } catch (int) {
40 return 0;
41 }
42 struct n : a, g::h {
43 void o();
jn44 void j(g &, int &, bool) { o(); }
45 };
46