blob: 55b931138a115474249b6c843a109f4084dc45b6 [file] [log] [blame]
// 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<typename T, typename U> struct B { U a; B(const T *); };
typedef B<char, A> 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 ();
}