// PR c++/6316 // This testcase ICEd because when deferred bar()::F::F() was being // expanded, containing bar() was still deferred and had DECL_EXTERNAL set // (and DECL_NOT_REALLY_EXTERN too). // { dg-do compile } // { dg-options "-O3" } struct A { ~A() throw() {} }; template struct B { U a; B(const T *); }; typedef B C; struct D { D(); }; struct E { virtual ~E(); }; E *bar (); void foo () { E *a = bar (); } extern char *z []; E * bar () { struct F : public E { F () { for (int i = 0; i < 2; i++) C e = z[i]; } D x, y; }; return new F (); } int main () { foo (); }