Commit b441ae1d by Steven G. Kargl

re PR fortran/69962 (ICE on missing parameter attribute, in gfc_set_constant_character_len)

2016-07-30  Steven G. Kargl  <kargl@gcc.gnu.org>

	PR fortran/69962
	* decl.c (gfc_set_constant_character_len):  if expr is not
	constant issue an error instead of an ICE.


2016-07-30  Steven G. Kargl  <kargl@gcc.gnu.org>

	PR fortran/69962
	* gfortran.dg/pr69962.f90: New test.

From-SVN: r238906
parent 712dff31
2016-07-30 Steven G. Kargl <kargl@gcc.gnu.org> 2016-07-30 Steven G. Kargl <kargl@gcc.gnu.org>
PR fortran/69962
* decl.c (gfc_set_constant_character_len): if expr is not
constant issue an error instead of an ICE.
2016-07-30 Steven G. Kargl <kargl@gcc.gnu.org>
PR fortran/70006 PR fortran/70006
* io.c (gfc_resolve_dt): Use correct locus. * io.c (gfc_resolve_dt): Use correct locus.
* resolve.c (resolve_branch): Ditto. * resolve.c (resolve_branch): Ditto.
......
...@@ -1495,10 +1495,14 @@ gfc_set_constant_character_len (int len, gfc_expr *expr, int check_len) ...@@ -1495,10 +1495,14 @@ gfc_set_constant_character_len (int len, gfc_expr *expr, int check_len)
gfc_char_t *s; gfc_char_t *s;
int slen; int slen;
gcc_assert (expr->expr_type == EXPR_CONSTANT);
if (expr->ts.type != BT_CHARACTER) if (expr->ts.type != BT_CHARACTER)
return; return;
if (expr->expr_type != EXPR_CONSTANT)
{
gfc_error_now ("CHARACTER length must be a constant at %L", &expr->where);
return;
}
slen = expr->value.character.length; slen = expr->value.character.length;
if (len != slen) if (len != slen)
......
2016-07-30 Steven G. Kargl <kargl@gcc.gnu.org> 2016-07-30 Steven G. Kargl <kargl@gcc.gnu.org>
PR fortran/69962
* gfortran.dg/pr69962.f90: New test.
2016-07-30 Steven G. Kargl <kargl@gcc.gnu.org>
PR fortran/70006 PR fortran/70006
* gfortran.dg/pr70006.f90: New test. * gfortran.dg/pr70006.f90: New test.
......
! { dg-do compile }
program p
integer :: n = 1
character(3), parameter :: x(2) = ['abc', 'xyz']
character(2), parameter :: y(2) = [x(2)(2:3), x(n)(1:2)] ! { dg-error "CHARACTER length must be a constant" }
end
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment