1/* { dg-do compile } */ 2class A { 3public: 4 A(int, int); 5}; 6class B { 7public: 8 void m_fn1(bool, const int *, int &); 9 unsigned m_fn2(); 10}; 11namespace { 12class C { 13 B &VTables; 14 void m_fn3(A, unsigned, const int *, int &); 15 16public: 17 int VFTableBuilder_VisitedBases; 18 B VFTableBuilder_VTables; 19 C() : VTables(VFTableBuilder_VTables) { 20 m_fn3(A(0, 0), 0, 0, VFTableBuilder_VisitedBases); 21 } 22}; 23} 24int a; 25void C::m_fn3(A, unsigned, const int *, int &) { 26 for (;;) 27 1 ? VTables.m_fn2() : 0; 28} 29void B::m_fn1(bool, const int *, int &) { C(); } 30unsigned B::m_fn2() { m_fn1(0, 0, a); } 31