diff options
author | Mark Eggleston <markeggleston@gcc.gnu.org> | 2020-10-01 11:14:09 +0100 |
---|---|---|
committer | Mark Eggleston <markeggleston@gcc.gnu.org> | 2020-10-12 08:56:13 +0100 |
commit | 875c29a245150b6d023b8b0eb7f0ba224df082d0 (patch) | |
tree | b8da5db633ac05a3f4ff096bff034e48ddaf23b8 /gcc | |
parent | 2baa36d4911940a068e63f2ee4298c13f92cf8d9 (diff) | |
download | gcc-875c29a245150b6d023b8b0eb7f0ba224df082d0.zip gcc-875c29a245150b6d023b8b0eb7f0ba224df082d0.tar.gz gcc-875c29a245150b6d023b8b0eb7f0ba224df082d0.tar.bz2 |
Fortran : ICE in gfc_validate_kind PR96099
Only check for kind if the type supports kind.
2020-10-12 Mark Eggleston <markeggleston@gcc.gnu.org>
gcc/fortran/ChangeLog:
PR fortran/96099
* decl.c (gfc_match_implicit): Check for numeric and logical
types.
2020-10-12 Mark Eggleston <markeggleston@gcc.gnu.org>
gcc/testsuite/ChangeLog:
PR fortran/96099
* gfortran.dg/pr96099_1.f90: New test.
* gfortran.dg/pr96099_2.f90: New test.
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/fortran/decl.c | 2 | ||||
-rw-r--r-- | gcc/testsuite/gfortran.dg/pr96099_1.f90 | 8 | ||||
-rw-r--r-- | gcc/testsuite/gfortran.dg/pr96099_2.f90 | 9 |
3 files changed, 18 insertions, 1 deletions
diff --git a/gcc/fortran/decl.c b/gcc/fortran/decl.c index 326e6f5..bddf69c 100644 --- a/gcc/fortran/decl.c +++ b/gcc/fortran/decl.c @@ -4835,7 +4835,7 @@ gfc_match_implicit (void) /* Last chance -- check <TYPE> <SELECTOR> (<RANGE>). */ if (ts.type == BT_CHARACTER) m = gfc_match_char_spec (&ts); - else if (ts.type != BT_DERIVED) + else if (gfc_numeric_ts(&ts) || ts.type == BT_LOGICAL) { m = gfc_match_kind_spec (&ts, false); if (m == MATCH_NO) diff --git a/gcc/testsuite/gfortran.dg/pr96099_1.f90 b/gcc/testsuite/gfortran.dg/pr96099_1.f90 new file mode 100644 index 0000000..9754bd3 --- /dev/null +++ b/gcc/testsuite/gfortran.dg/pr96099_1.f90 @@ -0,0 +1,8 @@ +! { dg-do compile } + +program pr96099_1 + implicit class(t) (1) ! { dg-error "Syntax error in IMPLICIT" } + type t + end type +end + diff --git a/gcc/testsuite/gfortran.dg/pr96099_2.f90 b/gcc/testsuite/gfortran.dg/pr96099_2.f90 new file mode 100644 index 0000000..3136d2e --- /dev/null +++ b/gcc/testsuite/gfortran.dg/pr96099_2.f90 @@ -0,0 +1,9 @@ +! { dg-do compile } + +program pr96099_2 + integer n1 + parameter (n1 = 1) + implicit class(t) (n1) ! { dg-error "Syntax error in IMPLICIT" } + type t + end type +end |