https://gcc.gnu.org/bugzilla/show_bug.cgi?id=77667
anlauf at gcc dot gnu.org changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |anlauf at gcc dot gnu.org --- Comment #3 from anlauf at gcc dot gnu.org --- The following patch seems to work: diff --git a/gcc/fortran/data.c b/gcc/fortran/data.c index 839e04277ef..dee38e5de50 100644 --- a/gcc/fortran/data.c +++ b/gcc/fortran/data.c @@ -589,6 +589,15 @@ gfc_assign_data_value (gfc_expr *lvalue, gfc_expr *rvalue, mpz_t index, return false; } + if (rvalue->symtree && rvalue->symtree->n.sym + && !rvalue->symtree->n.sym->attr.target + && !gfc_is_constant_expr (rvalue)) + { + gfc_error ("non-constant initialization expression in DATA statement " + "at %L", &rvalue->where); + return false; + } + if (ref || (last_ts->type == BT_CHARACTER && rvalue->expr_type == EXPR_CONSTANT)) {