https://gcc.gnu.org/bugzilla/show_bug.cgi?id=104649
--- Comment #3 from Paul Thomas <pault at gcc dot gnu.org> --- (In reply to kargl from comment #2) > Null pointer dereference. > > > diff --git a/gcc/fortran/decl.cc b/gcc/fortran/decl.cc > index bd586e75008..8e2cd511c4d 100644 > --- a/gcc/fortran/decl.cc > +++ b/gcc/fortran/decl.cc > @@ -6730,12 +6730,20 @@ ok: > || (p->next == NULL && q->next != NULL)) > arg_count_mismatch = true; > else if ((p->sym == NULL && q->sym == NULL) > - || strcmp (p->sym->name, q->sym->name) == 0) > + || (p->sym && q->sym > + && strcmp (p->sym->name, q->sym->name) == 0)) > continue; > else > - gfc_error_now ("Mismatch in MODULE PROCEDURE formal " > - "argument names (%s/%s) at %C", > - p->sym->name, q->sym->name); > + { > + if (q->sym) > + gfc_error_now ("Mismatch in MODULE PROCEDURE formal " > + "argument names (%qs/%qs) at %C", > + p->sym->name, q->sym->name); > + else > + gfc_error_now ("Mismatch in MODULE PROCEDURE formal argument " > + "name, %qs, and alternate return at %C", > + p->sym->name); > + } > } > > if (arg_count_mismatch) The second testcase still segfaults and everything is so optimised away that I cannot figure out why. Paul