re PR fortran/88269 (ICE in gfc_format_decoder, at fortran/error.c:947)

2018-12-10  Steven G. Kargl  <kargl@gcc.gnu.org>

	PR fortran/88269
	* io.c (io_constraint): Update macro. If locus line buffer is NULL,
	use gfc_current_locus in error messages.
	(check_io_constraints): Catch missing IO UNIT in write and read
	statements.  io_constraint macro is incompatible here.

2018-12-10  Steven G. Kargl  <kargl@gcc.gnu.org>

	PR fortran/88269
	* gfortran.dg/pr88269.f90: New test.

From-SVN: r266962
This commit is contained in:
Steven G. Kargl 2018-12-10 20:03:32 +00:00
parent 40540bf8fc
commit f7b3c0032f
4 changed files with 30 additions and 5 deletions

View File

@ -1,3 +1,11 @@
2018-12-10 Steven G. Kargl <kargl@gcc.gnu.org>
PR fortran/88269
* io.c (io_constraint): Update macro. If locus line buffer is NULL,
use gfc_current_locus in error messages.
(check_io_constraints): Catch missing IO UNIT in write and read
statements. io_constraint macro is incompatible here.
2018-12-09 Steven G. Kargl <kargl@gcc.gnu.org>
PR fortran/88205

View File

@ -3617,10 +3617,13 @@ static match
check_io_constraints (io_kind k, gfc_dt *dt, gfc_code *io_code,
locus *spec_end)
{
#define io_constraint(condition,msg,arg)\
#define io_constraint(condition, msg, arg)\
if (condition) \
{\
gfc_error(msg,arg);\
if ((arg)->lb != NULL)\
gfc_error ((msg), (arg));\
else\
gfc_error ((msg), &gfc_current_locus);\
m = MATCH_ERROR;\
}
@ -3680,11 +3683,14 @@ if (condition) \
if (expr && expr->ts.type != BT_CHARACTER)
{
io_constraint (gfc_pure (NULL) && (k == M_READ || k == M_WRITE),
"IO UNIT in %s statement at %C must be "
if (gfc_pure (NULL) && (k == M_READ || k == M_WRITE))
{
gfc_error ("IO UNIT in %s statement at %C must be "
"an internal file in a PURE procedure",
io_kind_name (k));
return MATCH_ERROR;
}
if (k == M_READ || k == M_WRITE)
gfc_unset_implicit_pure (NULL);
}

View File

@ -1,3 +1,8 @@
2018-12-10 Steven G. Kargl <kargl@gcc.gnu.org>
PR fortran/88269
* gfortran.dg/pr88269.f90: New test.
2018-12-09 Steven G. Kargl <kargl@gcc.gnu.org>
PR fortran/88205

View File

@ -0,0 +1,6 @@
! { dg-do compile }
! PR fortran/88269
program p
write (end=1e1) ! { dg-error "tag not allowed" }
end