From: Steven G. Kargl Date: Sun, 9 Dec 2018 20:23:06 +0000 (+0000) Subject: re PR fortran/88206 (ICE in gfc_match_type_spec, at fortran/match.c:2229) X-Git-Tag: releases/gcc-7.5.0~736 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=22bdb5bdc4c9a5dde42876ec2fda52dd67152d33;p=thirdparty%2Fgcc.git re PR fortran/88206 (ICE in gfc_match_type_spec, at fortran/match.c:2229) 2018-12-09 Steven G. Kargl PR fortran/88206 * match.c (gfc_match_type_spec): REAL can be an intrinsic function. 2018-12-09 Steven G. Kargl PR fortran/88206 * gfortran.dg/pr88206.f90: New test. From-SVN: r266934 --- diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index 055b7faf6f94..df57d39fc3cb 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,3 +1,8 @@ +2018-12-09 Steven G. Kargl + + PR fortran/88206 + * match.c (gfc_match_type_spec): REAL can be an intrinsic function. + 2018-12-09 Fritz Reese PR fortran/88228 diff --git a/gcc/fortran/match.c b/gcc/fortran/match.c index 89fb43dc0485..222c8d0068ed 100644 --- a/gcc/fortran/match.c +++ b/gcc/fortran/match.c @@ -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; diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 8fb2c4787365..0e212e667fd2 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2018-12-09 Steven G. Kargl + + PR fortran/88206 + * gfortran.dg/pr88206.f90: New test. + 2018-12-09 Steven G. Kargl PR fortran/88228 diff --git a/gcc/testsuite/gfortran.dg/pr88206.f90 b/gcc/testsuite/gfortran.dg/pr88206.f90 new file mode 100644 index 000000000000..71c61f060989 --- /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 +