https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85780
kargl at gcc dot gnu.org changed: What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |NEW Last reconfirmed| |2018-05-14 CC| |kargl at gcc dot gnu.org, | |pault at gcc dot gnu.org Ever confirmed|0 |1 --- Comment #1 from kargl at gcc dot gnu.org --- Paul, The ICE can be fixed by checking for a NULL pointer. Index: gcc/fortran/resolve.c =================================================================== --- gcc/fortran/resolve.c (revision 260235) +++ gcc/fortran/resolve.c (working copy) @@ -12501,7 +12501,7 @@ resolve_fl_procedure (gfc_symbol *sym, int mp_flag) while (curr_arg != NULL) { /* Skip implicitly typed dummy args here. */ - if (curr_arg->sym->attr.implicit_type == 0) + if (curr_arg->sym && curr_arg->sym->attr.implicit_type == 0) if (!gfc_verify_c_interop_param (curr_arg->sym)) /* If something is found to fail, record the fact so we can mark the symbol for the procedure as not being HOwever, I think we then have an accepts invalid as an alternate return takes a label. If I look at gfc_match_formal_arglist in decl.c, it looks like your PDT work may have touched the area that should issue an error. 81764 dnovillo if (gfc_match_char ('*') == MATCH_YES) 197389 janus { 197389 janus sym = NULL; 255311 pault if (!typeparam && !gfc_notify_std (GFC_STD_F95_OBS, 255311 pault "Alternate-return argument at %C")) 197389 janus { 197389 janus m = MATCH_ERROR; 197389 janus goto cleanup; 197389 janus } 255311 pault else if (typeparam) 255311 pault gfc_error_now ("A parameter name is required at %C"); 197389 janus } Do you have any insights?