From 4381322d6eddf1d162f35e4965b55fcb23808d3c Mon Sep 17 00:00:00 2001 From: "Steven G. Kargl" Date: Sat, 24 Oct 2015 17:09:35 +0000 Subject: [PATCH] re PR fortran/68055 (ICE on using unsupported kinds in program without program statement) 2015-10-24 Steven G. Kargl PR fortran/68055 * decl.c (gfc_match_decl_type_spec): Check for valid kind in old-style declarations. 2015-10-24 Steven G. Kargl PR fortran/68055 * gfortran.dg/pr68055.f90: New case. From-SVN: r229288 --- gcc/fortran/ChangeLog | 6 ++++++ gcc/fortran/decl.c | 6 +++++- gcc/testsuite/ChangeLog | 15 +++++++++++++++ gcc/testsuite/gfortran.dg/pr68055.f90 | 13 +++++++++++++ 4 files changed, 39 insertions(+), 1 deletion(-) create mode 100644 gcc/testsuite/gfortran.dg/pr68055.f90 diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index 67d1fb0313e..c65a6924184 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,3 +1,9 @@ +2015-10-24 Steven G. Kargl + + PR fortran/68055 + * decl.c (gfc_match_decl_type_spec): Check for valid kind in old-style + declarations. + 2015-10-24 Steven G. Kargl PR fortran/67805 diff --git a/gcc/fortran/decl.c b/gcc/fortran/decl.c index 200a1287057..651f1b0265d 100644 --- a/gcc/fortran/decl.c +++ b/gcc/fortran/decl.c @@ -3021,7 +3021,11 @@ get_kind: m = gfc_match_kind_spec (ts, false); if (m == MATCH_NO && ts->type != BT_CHARACTER) - m = gfc_match_old_kind_spec (ts); + { + m = gfc_match_old_kind_spec (ts); + if (gfc_validate_kind (ts->type, ts->kind, true) == -1) + return MATCH_ERROR; + } if (matched_type && gfc_match_char (')') != MATCH_YES) return MATCH_ERROR; diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index bd0281a0243..212a67750a5 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,18 @@ +2015-10-24 Steven G. Kargl + + PR fortran/68055 + * gfortran.dg/pr68055.f90: New case. + +2015-10-24 Steven G. Kargl + + PR fortran/67805 + * gfortran.dg/pr67805.f90: New testcase. + * gfortran.dg/array_constructor_26.f03: Update testcase. + * gfortran.dg/array_constructor_27.f03: Ditto. + * gfortran.dg/char_type_len_2.f90: Ditto. + * gfortran.dg/pr67802.f90: Ditto. + * gfortran.dg/used_before_typed_3.f90: Ditto. + 2015-10-23 Jan Hubicka PR ipa/pr67600 diff --git a/gcc/testsuite/gfortran.dg/pr68055.f90 b/gcc/testsuite/gfortran.dg/pr68055.f90 new file mode 100644 index 00000000000..c84a6451d5e --- /dev/null +++ b/gcc/testsuite/gfortran.dg/pr68055.f90 @@ -0,0 +1,13 @@ +! { dg-do compile } +! PR fortran/68055 +! Original code contributed by Gerhard Steinmetz +! gerhard dot steinmetz dot fortran at t-online dot de +! + integer*3 c ! { dg-error "not supported at" } + real*9 x ! { dg-error "not supported at" } + logical*11 a ! { dg-error "not supported at" } + complex*42 z ! { dg-error "not supported at" } + c = 1 + x = 1 + call foo(a) +end -- 2.30.2