https://gcc.gnu.org/bugzilla/show_bug.cgi?id=99205

--- Comment #2 from anlauf at gcc dot gnu.org ---
This fixes the testcase and passes regtesting:

diff --git a/gcc/fortran/data.c b/gcc/fortran/data.c
index 25e97930169..71e2552025d 100644
--- a/gcc/fortran/data.c
+++ b/gcc/fortran/data.c
@@ -595,6 +595,9 @@ gfc_assign_data_value (gfc_expr *lvalue, gfc_expr *rvalue,
mpz_t index,
       /* An initializer has to be constant.  */
       if (lvalue->ts.u.cl->length == NULL && !(ref && ref->u.ss.length !=
NULL))
        return false;
+      if (lvalue->ts.u.cl->length
+         && lvalue->ts.u.cl->length->expr_type != EXPR_CONSTANT)
+       return false;
       expr = create_character_initializer (init, last_ts, ref, rvalue);
       if (!expr)
        return false;

Reply via email to