aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSteven G. Kargl <kargl@gcc.gnu.org>2018-12-09 19:10:57 +0000
committerSteven G. Kargl <kargl@gcc.gnu.org>2018-12-09 19:10:57 +0000
commit6dc5aacf971328602dcbf278b6a6ed2cbb6dc99a (patch)
treebf5fddfe44a9c1c6b64290404f3cc771b3d67861
parentd0cbb206e2068e97efc3022c587bdaa16b85d9c0 (diff)
downloadgcc-6dc5aacf971328602dcbf278b6a6ed2cbb6dc99a.zip
gcc-6dc5aacf971328602dcbf278b6a6ed2cbb6dc99a.tar.gz
gcc-6dc5aacf971328602dcbf278b6a6ed2cbb6dc99a.tar.bz2
re PR fortran/88206 (ICE in gfc_match_type_spec, at fortran/match.c:2229)
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: r266930
-rw-r--r--gcc/fortran/ChangeLog5
-rw-r--r--gcc/fortran/match.c5
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gfortran.dg/pr88206.f908
4 files changed, 23 insertions, 0 deletions
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog
index f37ca63..f5c2f01 100644
--- a/gcc/fortran/ChangeLog
+++ b/gcc/fortran/ChangeLog
@@ -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
diff --git a/gcc/fortran/match.c b/gcc/fortran/match.c
index f22241d..d548bb9 100644
--- a/gcc/fortran/match.c
+++ b/gcc/fortran/match.c
@@ -2225,6 +2225,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)
@@ -2239,6 +2242,8 @@ found:
}
}
+ohno:
+
/* If a type is not matched, simply return MATCH_NO. */
gfc_current_locus = old_locus;
return MATCH_NO;
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 120fb9e..aac29ff 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,5 +1,10 @@
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
* gfortran.dg/pr88228.f90: New test.
diff --git a/gcc/testsuite/gfortran.dg/pr88206.f90 b/gcc/testsuite/gfortran.dg/pr88206.f90
new file mode 100644
index 0000000..71c61f0
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/pr88206.f90
@@ -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
+