https://gcc.gnu.org/bugzilla/show_bug.cgi?id=94397

--- Comment #6 from markeggleston at gcc dot gnu.org ---
(In reply to kargl from comment #5)
> (In reply to markeggleston from comment #4)
> > The compilation error reported is due this change in PR93484:
> > 
> > --- a/gcc/fortran/match.c
> > +++ b/gcc/fortran/match.c
> > @@ -2222,9 +2222,9 @@ gfc_match_type_spec (gfc_typespec *ts)
> >  
> >  found:
> >  
> > -      m = gfc_match_init_expr (&e);
> > +      m = gfc_match_expr (&e);
> > 
> > Changing it back causes test cases ISO_Fortran_binding_11.f90 and
> > pr78033.f90 to fail.
> > 
> > If "kind=" is found gfc_match_init_expr (&e) should be used and when it is
> > not gfc_match_expr (&e).
> > 
> > I'm checking a suitable test case and will have a patch ready soon.
> 
> The patch in comment #3 likely is the correct patch.  When in the
> specification part of a scoping unit, the above change is needed to
> distinguish REAL(kind(1.)) from REAL(1.1, kind(1.)).  In the former,
> we have a type and kind(1.) must be an initialization expression
> (see comment 3 or 4 lines down).  In the latter case, we have the
> intrinsic subprogram, and simply return MATCH_NO or MATCH_ERROR.
> 
> -- 
> steve

Thanks Steve.  Should've tried your patch earlier, it is much simpler than mine
and I've verified that it works. There was a nagging feeling that my solution
was incomplete. I'm happy to add test cases to your patch and send it upstream
for approval.

Reply via email to