[fortran] ICE in gfc_validate_kind(): Got bad kind [PR93580]
authorMark Eggleston <markeggleston@gcc.gnu.org>
Tue, 18 Feb 2020 10:00:50 +0000 (10:00 +0000)
committerMark Eggleston <markeggleston@gcc.gnu.org>
Tue, 18 Feb 2020 10:00:50 +0000 (10:00 +0000)
commitd4c10c9f4bff616e7ed07e92504fe31a700e2af1
tree72b83cccb0605d3367f12ddf4d03494ae62e3496
parentda67227bfc407dd1412b3396ed962f30084f9401
[fortran] ICE in gfc_validate_kind(): Got bad kind [PR93580]

Caused by using invalid part_refs in kind specifications,
e.g. %re or %im on non-complex expressions and %len on
non character expressions.

Check whether %re, %im and %len are valid when checking
kind specification.

The original patch from Steven G. Kargl  <kargl@gcc.gnu.org> only
checked for %re and %im.

gcc/fortran/ChangeLog:

PR fortran/93580
* primary.c (gfc_match_varspec): If the symbol following %
is re or im and the primary expression type is not BT_COMPLEX
issue an error. If the symbol is len and the primary
expression type is not BT_CHARACTER is an error.

gcc/testsuite/ChangeLog:

PR fortran/93580
* gfortran.dg/dg/pr93580.f90: New test.
gcc/fortran/ChangeLog
gcc/fortran/primary.c
gcc/testsuite/ChangeLog
gcc/testsuite/gfortran.dg/pr93580.f90 [new file with mode: 0644]