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.

Reply via email to