]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
re PR fortran/88206 (ICE in gfc_match_type_spec, at fortran/match.c:2229)
authorSteven G. Kargl <kargl@gcc.gnu.org>
Sun, 9 Dec 2018 20:23:06 +0000 (20:23 +0000)
committerSteven G. Kargl <kargl@gcc.gnu.org>
Sun, 9 Dec 2018 20:23:06 +0000 (20:23 +0000)
2018-12-09  Steven G. Kargl  <kargl@gcc.gnu.org>

PR fortran/88206
* match.c (gfc_match_type_spec): REAL can be an intrinsic function.

2018-12-09  Steven G. Kargl  <kargl@gcc.gnu.org>

PR fortran/88206
* gfortran.dg/pr88206.f90: New test.

From-SVN: r266934

gcc/fortran/ChangeLog
gcc/fortran/match.c
gcc/testsuite/ChangeLog
gcc/testsuite/gfortran.dg/pr88206.f90 [new file with mode: 0644]

index 055b7faf6f9459dfdad143e747b515cab3ae0f22..df57d39fc3cbd4e5dc993ce02ad4a62577556351 100644 (file)
@@ -1,3 +1,8 @@
+2018-12-09  Steven G. Kargl  <kargl@gcc.gnu.org>
+
+       PR fortran/88206
+       * match.c (gfc_match_type_spec): REAL can be an intrinsic function.
+
 2018-12-09  Fritz Reese  <fritzoreese@gmail.com>
 
        PR fortran/88228
index 89fb43dc04859465c7363573e96e257a34f2c27b..222c8d0068ed738f9584c9b8d05b19be799a7425 100644 (file)
@@ -2153,6 +2153,9 @@ found:
              return MATCH_NO;
            }
 
+         if (e->expr_type != EXPR_CONSTANT)
+           goto ohno;
+
          gfc_next_char (); /* Burn the ')'. */
          ts->kind = (int) mpz_get_si (e->value.integer);
          if (gfc_validate_kind (ts->type, ts->kind , true) == -1)
@@ -2167,6 +2170,8 @@ found:
        }
     }
 
+ohno:
+
   /* If a type is not matched, simply return MATCH_NO.  */
   gfc_current_locus = old_locus;
   return MATCH_NO;
index 8fb2c478736542ef0f541294e385edd632c17b03..0e212e667fd24c0a3287ab606da7dd7888622d13 100644 (file)
@@ -1,3 +1,8 @@
+2018-12-09  Steven G. Kargl  <kargl@gcc.gnu.org>
+
+       PR fortran/88206
+       * gfortran.dg/pr88206.f90: New test.
+
 2018-12-09  Steven G. Kargl  <kargl@gcc.gnu.org>
 
        PR fortran/88228
diff --git a/gcc/testsuite/gfortran.dg/pr88206.f90 b/gcc/testsuite/gfortran.dg/pr88206.f90
new file mode 100644 (file)
index 0000000..71c61f0
--- /dev/null
@@ -0,0 +1,8 @@
+! { dg-do compile }
+! PR fortran/88206
+program p
+   integer, parameter :: z(4) = [1,2,3,4]
+   integer :: k = 2
+   print *, [real(z(k))]
+end
+