https://gcc.gnu.org/bugzilla/show_bug.cgi?id=69603
Harald Anlauf <anlauf at gmx dot de> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |anlauf at gmx dot de --- Comment #2 from Harald Anlauf <anlauf at gmx dot de> --- (In reply to Dominique d'Humieres from comment #1) > The ICE occurred between revisions r219318 (2015-01-07, compiles) and > r219477 (2015-01-12, ICE), possibly r219439. Reduced test Reduced somewhat more: PROGRAM prog implicit none TYPE object PROCEDURE(), POINTER, NOPASS :: f END TYPE object TYPE (object) :: o1 CALL set_func(o1%f) CONTAINS SUBROUTINE set_func(f) PROCEDURE(), POINTER :: f END SUBROUTINE set_func END PROGRAM prog Running under gdb, I find that in interface.c, function compare_parameter, line 2008ff, the call to gfc_compare_interfaces has ppc->ts.interface==NULL: ppc = gfc_get_proc_ptr_comp (actual); if (ppc) { if (!gfc_compare_interfaces (formal, ppc->ts.interface, ppc->name, 0, 1, err, sizeof(err), NULL, NULL)) { if (where) gfc_error ("Interface mismatch in dummy procedure %qs at %L: %s", formal->name, &actual->where, err); return 0; } } Possible fix (for the crash), untested: Index: gcc/fortran/interface.c =================================================================== --- gcc/fortran/interface.c (revision 234170) +++ gcc/fortran/interface.c (working copy) @@ -2006,7 +2006,7 @@ } ppc = gfc_get_proc_ptr_comp (actual); - if (ppc) + if (ppc && ppc->ts.interface) { if (!gfc_compare_interfaces (formal, ppc->ts.interface, ppc->name, 0, 1, err, sizeof(err), NULL, NULL))