re PR fortran/91642 (ICE: Bad IO basetype (transfer_expr, at fortran/trans-io.c:2507))

2019-09-11  Steven G. Kargl  <kargl@gcc.gnu.org>

	PR fortran/91642
	* io.c (gfc_match_inquire): null() cannot be in an iolength inquire
	list.

2019-09-11  Steven G. Kargl  <kargl@gcc.gnu.org>

	PR fortran/91642
	* gfortran.dg/pr91642.f90: New test.

From-SVN: r275655
This commit is contained in:
Steven G. Kargl 2019-09-11 18:27:17 +00:00
parent 19e057e7cc
commit 84e3325133
4 changed files with 41 additions and 0 deletions

View file

@ -1,3 +1,9 @@
2019-09-11 Steven G. Kargl <kargl@gcc.gnu.org>
PR fortran/91642
* io.c (gfc_match_inquire): null() cannot be in an iolength inquire
list.
2019-09-05 Harald Anlauf <anlauf@gmx.de>
PR fortran/91496

View file

@ -4641,6 +4641,17 @@ gfc_match_inquire (void)
if (m == MATCH_NO)
goto syntax;
for (gfc_code *c = code; c; c = c->next)
if (c->expr1 && c->expr1->expr_type == EXPR_FUNCTION
&& c->expr1->symtree && c->expr1->symtree->n.sym->attr.function
&& !c->expr1->symtree->n.sym->attr.external
&& strcmp (c->expr1->symtree->name, "null") == 0)
{
gfc_error ("NULL() near %L cannot appear in INQUIRE statement",
&c->expr1->where);
goto cleanup;
}
new_st.op = EXEC_IOLENGTH;
new_st.expr1 = inquire->iolength;
new_st.ext.inquire = inquire;

View file

@ -1,3 +1,8 @@
2019-09-11 Steven G. Kargl <kargl@gcc.gnu.org>
PR fortran/91642
* gfortran.dg/pr91642.f90: New test.
2019-09-11 Jakub Jelinek <jakub@redhat.com>
PR rtl-optimization/89435

View file

@ -0,0 +1,19 @@
! { dg-do compile }
! PR fortran/91642
! Code contributed by Gerhard Steinmetz
program p
integer i
integer :: iol
integer, external :: null
i = 0
inquire (iolength=iol) null()
if (iol == 4) stop 1
end
subroutine q
integer i
integer :: iol
i = 0
inquire (iolength=iol) i, null() ! { dg-error "cannot appear in INQUIRE" }
if (iol == 4) stop 2
end