I intend to commit the following patch unless someone speaks up before sometime tomorrow (i.e, Saturday).
2016-07-29 Steven G. Kargl <ka...@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-29 Steven G. Kargl <ka...@gcc.gnu.org> PR fortran/69962 * gfortran.dg/pr69962.f90: New test. Index: gcc/fortran/decl.c =================================================================== --- gcc/fortran/decl.c (revision 238842) +++ gcc/fortran/decl.c (working copy) @@ -1486,10 +1486,14 @@ gfc_set_constant_character_len (int len, gfc_char_t *s; int slen; - gcc_assert (expr->expr_type == EXPR_CONSTANT); - if (expr->ts.type != BT_CHARACTER) 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; if (len != slen) Index: gcc/testsuite/gfortran.dg/pr69962.f90 =================================================================== --- gcc/testsuite/gfortran.dg/pr69962.f90 (nonexistent) +++ gcc/testsuite/gfortran.dg/pr69962.f90 (working copy) @@ -0,0 +1,6 @@ +! { 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 -- Steve