re PR fortran/77960 (ICE in gfc_conv_ss_startstride, at fortran/trans-array.c:3966)

2019-01-19  Steven G. Kargl  <kargl@gcc.gnu.org>

	PR fortran/77960
	* io.c (match_io_element): input-item cannot be an external function.
 
2019-01-19  Steven G. Kargl  <kargl@gcc.gnu.org>

	PR fortran/77960
	* gfortran.dg/pr77960.f90: New test.

From-SVN: r268097
This commit is contained in:
Steven G. Kargl 2019-01-19 21:18:26 +00:00
parent 8558af5023
commit 5131b898e5
4 changed files with 36 additions and 0 deletions

View File

@ -1,3 +1,8 @@
2019-01-19 Steven G. Kargl <kargl@gcc.gnu.org>
PR fortran/77960
* io.c (match_io_element): input-item cannot be an external function.
2018-01-19 Thomas Koenig <tkoenig@gcc.gnu.org>
Paul Thomas <pault@gcc.gnu.org>

View File

@ -3610,6 +3610,16 @@ match_io_element (io_kind k, gfc_code **cpp)
m = gfc_match_variable (&expr, 0);
if (m == MATCH_NO)
gfc_error ("Expected variable in READ statement at %C");
if (m == MATCH_YES
&& expr->expr_type == EXPR_VARIABLE
&& expr->symtree->n.sym->attr.external)
{
gfc_error ("Expecting variable or io-implied-do at %L",
&expr->where);
m = MATCH_ERROR;
}
}
else
{

View File

@ -1,3 +1,8 @@
2019-01-19 Steven G. Kargl <kargl@gcc.gnu.org>
PR fortran/77960
* gfortran.dg/pr77960.f90: New test.
2018-01-19 Thomas Koenig <tkoenig@gcc.gnu.org>
Paul Thomas <pault@gcc.gnu.org>

View File

@ -0,0 +1,16 @@
! { dg-do compile }
! PR fortran/77960
procedure(g), pointer :: f
f => g
read(99) f ! { dg-error "Expecting variable" }
contains
function g() result(z)
integer :: z(2)
z = 1
end
end
subroutine bar(x)
integer, external :: x
read(*,*) x ! { dg-error "Expecting variable" }
end subroutine