[Patch, Fortran, OOP] PR 44541: wrong code for polymorphic variable with INTENT(OUT)/Alloc w/ MOLD
Tobias Burnus
burnus@net-b.de
Wed Sep 1 19:23:00 GMT 2010
Janus Weil wrote:
> I don't see what you mean. The intention here was to check the
> 'referenced' attribute only for non-dummies, but anyway ...
Sorry, I misread that part. I think your patch makes sense - but for
some reason it does not seem to be required.
For my example, the value is set via: resolve_fl_variable ->
resolve_fl_variable_derived, which contains:
/* Assign default initializer. */
if (!(sym->value || sym->attr.pointer || sym->attr.allocatable)
&& (!no_init_flag || sym->attr.intent == INTENT_OUT))
{
sym->value = gfc_default_initializer (&sym->ts);
}
Thus, I really wonder whether the resolve_symbol's version is used at all.
> + if (sym->ts.type == BT_CLASS&& sym->ns == gfc_current_ns
> +&& sym->attr.dummy&& sym->attr.intent == INTENT_OUT
> +&& !sym->attr.pointer&& !sym->attr.allocatable)
> + apply_default_init (sym);
> +
> /* If this symbol has a type-spec, check it. */
> if (sym->attr.flavor == FL_VARIABLE || sym->attr.flavor == FL_PARAMETER
> || (sym->attr.flavor == FL_PROCEDURE&& sym->attr.function))
OK - though one could think of plugging into the resolve_fl_variable or
resolve_fl_variable_derived code.
Tobias
More information about the Gcc-patches
mailing list