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

--- Comment #4 from Martin Liška <marxin at gcc dot gnu.org> ---
(In reply to Thomas Koenig from comment #2)
> This looks pretty obvious to me, at least looking at the
> -fdump-fortran-original dump.  I will try to come up with
> a test case.
> 
> Would it be possible to check that this also fixes the
> nullpointer offset access?
> 
> Index: trans-types.c
> ===================================================================
> --- trans-types.c       (Revision 269161)
> +++ trans-types.c       (Arbeitskopie)
> @@ -2988,9 +2988,9 @@
>    f = &sym->formal;
>    for (a = actual_args; a != NULL; a = a->next)
>      {
> +      (*f) = gfc_get_formal_arglist ();
>        if (a->expr)
>         {
> -         (*f) = gfc_get_formal_arglist ();
>           snprintf (name, GFC_MAX_SYMBOL_LEN, "_formal_%d", var_num ++);
>           gfc_get_symbol (name, NULL, &s);
>           if (a->expr->ts.type == BT_PROCEDURE)
> @@ -3012,6 +3012,9 @@
>           s->attr.intent = INTENT_UNKNOWN;
>           (*f)->sym = s;
>         }
> +      else
> +       (*f)->sym = NULL;
> +
>        f = &((*f)->next);
>      }
>  }

I can confirm this works fine for the test-case as well as for
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=89496#c3
Thanks for the fix.

Reply via email to