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:
parent
19e057e7cc
commit
84e3325133
4 changed files with 41 additions and 0 deletions
|
@ -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
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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
|
||||
|
|
19
gcc/testsuite/gfortran.dg/pr91642.f90
Normal file
19
gcc/testsuite/gfortran.dg/pr91642.f90
Normal 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
|
Loading…
Add table
Reference in a new issue