// PR middle-end/87916 // Testcase by Martin Liška // { dg-do compile } // { dg-options "-O2 -g" } // { dg-additional-options "-fPIC" { target fpic } } struct a { virtual ~a(); }; template class c { public: class d { public: d(c); b *operator->(); }; }; int e, f; class g { public: class h { public: virtual void j(g &, int &, bool) = 0; }; c k(); int *l(); int *m(); }; int *g::l() try { for (c::d i(k());;) i->j(*this, e, true); } catch (int) { return 0; } int *g::m() try { for (c::d i(k());;) i->j(*this, f, false); } catch (int) { return 0; } struct n : a, g::h { void o(); void j(g &, int &, bool) { o(); } };