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

--- Comment #3 from Steve Kargl <sgk at troutmask dot apl.washington.edu> ---
On Mon, Mar 30, 2020 at 04:23:11PM +0000, kargl at gcc dot gnu.org wrote:
> 
> --- Comment #2 from kargl at gcc dot gnu.org ---
> (In reply to Martin Liška from comment #1)
> > Confirmed, started with r10-7369-gc38daa7976886a59.
> 
> Patch in the linked git revision appears to expose a latent
> bug in TYPE IS().   Two workarounds are to use either
> 
> type is (real(4))  ! Bad, because of hard coded kind parameter
> 
> or
> 
> integer, parameter :: sp = kind(1.)
> ...
> type is (real(sp))
> 

Untested patch against svn reverion 280157.

Index: gcc/fortran/match.c
===================================================================
--- gcc/fortran/match.c (revision 280157)
+++ gcc/fortran/match.c (working copy)
@@ -2239,7 +2239,8 @@ found:
         a scalar integer initialization-expr and valid kind parameter. */
       if (c == ')')
        {
-         if (e->ts.type != BT_INTEGER || e->rank > 0)
+         if (!gfc_reduce_init_expr (e)
+             || e->ts.type != BT_INTEGER || e->rank > 0)
            {
              gfc_free_expr (e);
              return MATCH_NO;

Reply via email to