diff options
author | Steven G. Kargl <kargl@gcc.gnu.org> | 2018-12-09 19:10:57 +0000 |
---|---|---|
committer | Steven G. Kargl <kargl@gcc.gnu.org> | 2018-12-09 19:10:57 +0000 |
commit | 6dc5aacf971328602dcbf278b6a6ed2cbb6dc99a (patch) | |
tree | bf5fddfe44a9c1c6b64290404f3cc771b3d67861 /gcc | |
parent | d0cbb206e2068e97efc3022c587bdaa16b85d9c0 (diff) | |
download | gcc-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
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/fortran/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/fortran/match.c | 5 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/gfortran.dg/pr88206.f90 | 8 |
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 + |