[Bug fortran/45828] [4.6 Regression] No default initialization of derived type members?
jpr at csc dot fi
gcc-bugzilla@gcc.gnu.org
Thu Sep 30 10:13:00 GMT 2010
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=45828
--- Comment #3 from jpr at csc dot fi 2010-09-30 04:50:05 UTC ---
Hi,
the problem seems to be in expr.c (called from resolve.c:
resolve_allocate_expr())
bool gfc_has_default_initializer (gfc_symbol *der)
{
gfc_component *c;
gcc_assert (der->attr.flavor == FL_DERIVED);
for (c = der->components; c; c = c->next)
if (c->ts.type == BT_DERIVED)
{
if (!c->attr.pointer
&& gfc_has_default_initializer (c->ts.u.derived))
return true;
}
else
{
if (c->initializer)
return true;
}
return false;
}
if a derived type has a derived type component it only checks whether
that components components have default initializers, not the component
itself. Additionally the pointer case is masked away. Adding
|| c->initializer to the conditions solves this trouble but propably
breaks something else, as the resolving allocate() is not the only place
this gets called.
Juha
More information about the Gcc-bugs
mailing list