Fix ICE on invalid, PR94090.
authorThomas König <tkoenig@gcc.gnu.org>
Fri, 17 Apr 2020 17:53:45 +0000 (19:53 +0200)
committerThomas König <tkoenig@gcc.gnu.org>
Fri, 17 Apr 2020 17:53:45 +0000 (19:53 +0200)
commit2298af0800b292f028298c1eaec42fd3033c4b9b
tree95882dce57ad39ffb743d2e56ce95d694cae9cec
parentaf557050fd011a03d21dc26b31959033061a0443
Fix ICE on invalid, PR94090.

The attached patch fixes an ICE on invalid: When the return type of
a function was misdeclared with a wrong rank, we issued a warning,
but not an error (unless with -pedantic); later on, an ICE ensued.

Nothing good can come from wrongly declaring a function type
(considering the ABI), so I changed that into a hard error.

2020-04-17  Thomas Koenig  <tkoenig@gcc.gnu.org>

PR fortran/94090
* gfortran.dg (gfc_compare_interfaces): Add
optional argument bad_result_characteristics.
* interface.c (gfc_check_result_characteristics): Fix
whitespace.
(gfc_compare_interfaces): Handle new argument; return
true if function return values are wrong.
* resolve.c (resolve_global_procedure): Hard error if
the return value of a function is wrong.

2020-04-17  Thomas Koenig  <tkoenig@gcc.gnu.org>

PR fortran/94090
* gfortran.dg/interface_46.f90: New test.
gcc/fortran/ChangeLog
gcc/fortran/gfortran.h
gcc/fortran/interface.c
gcc/fortran/resolve.c
gcc/testsuite/ChangeLog
gcc/testsuite/gfortran.dg/interface_46.f90 [new file with mode: 0644]