https://gcc.gnu.org/bugzilla/show_bug.cgi?id=90744

--- Comment #4 from Thomas Koenig <tkoenig at gcc dot gnu.org> ---
(In reply to Tomáš Trnka from comment #3)

> I'm not sure how to fix this properly, but the following one-liner seems to
> work for me:
> 
> --- a/gcc/fortran/trans-types.c
> +++ b/gcc/fortran/trans-types.c
> @@ -3006,6 +3006,7 @@ get_formal_from_actual_arglist (gfc_symbol *sym,
> gfc_actual_arglist *actual_args
>             {
>               s->ts = a->expr->ts;
>               s->attr.flavor = FL_VARIABLE;
> +             s->ts.deferred = false;
>               if (a->expr->rank > 0)
>                 {
>                   s->attr.dimension = 1;

Good analysis, and this is indeed the correct fix.

(In this case, it is the actual argument that is deferred, it does
not make sense for the dummy argument to have the same attribute
in the absence of an explicit interface).

Do you have a gcc copyright assignment (and possibly commit privileges),
by any chance?  If not, I'll commit your patch, as it is both
obvious and simple, and is definitely small enough so no
copyright assignment is needed.

Thanks!

Reply via email to