https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82866
--- Comment #6 from Steve Kargl <sgk at troutmask dot apl.washington.edu> --- On Mon, Nov 06, 2017 at 07:48:12PM +0000, jvdelisle at gcc dot gnu.org wrote: > > --- Comment #5 from Jerry DeLisle <jvdelisle at gcc dot gnu.org> --- > (In reply to kargl from comment #4) > --- snip --- > > If it passes regression testing, consider it approved. I don't know if it is correct. In particular, ... > > % svn diff resolve.c > > Index: resolve.c > > =================================================================== > > --- resolve.c (revision 254461) > > +++ resolve.c (working copy) > > @@ -14001,13 +14001,19 @@ resolve_fl_derived0 (gfc_symbol *sym) > > { > > for (f = sym->formal; f; f = f->next) > > { > > - c = gfc_find_component (sym, f->sym->name, true, true, NULL); > > - if (c == NULL) > > + if (!f->sym) > > { > > gfc_error ("Parameterized type %qs does not have a component " > > + "at %L", sym->name, &sym->declared_at); > > + return false; > > + } > > + > > + if (!gfc_find_component (sym, f->sym->name, true, true, NULL)) > > + { > > + gfc_error ("Parameterized type %qs does not have a component " > > "corresponding to parameter %qs at %L", sym->name, > > f->sym->name, &sym->declared_at); > > - break; > > + return false; changing a 'break' to 'return false' changes the behavior of the code.