From b79c59fba14d132e2a773cfa7d1cd5d10ff04182 Mon Sep 17 00:00:00 2001 From: kargl Date: Sun, 9 Dec 2018 19:10:57 +0000 Subject: [PATCH] 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. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@266930 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/fortran/ChangeLog | 5 +++++ gcc/fortran/match.c | 5 +++++ gcc/testsuite/ChangeLog | 5 +++++ gcc/testsuite/gfortran.dg/pr88206.f90 | 8 ++++++++ 4 files changed, 23 insertions(+) create mode 100644 gcc/testsuite/gfortran.dg/pr88206.f90 diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index f37ca637fa01..f5c2f01bab46 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 f22241da60ba..d548bb92c2db 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 120fb9e13084..aac29ffe6141 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 + -- 2.47.2