https://gcc.gnu.org/bugzilla/show_bug.cgi?id=90561
--- Comment #9 from Thomas Koenig <tkoenig at gcc dot gnu.org> --- ... and this Index: trans-expr.c =================================================================== --- trans-expr.c (Revision 274370) +++ trans-expr.c (Arbeitskopie) @@ -10796,7 +10796,13 @@ gfc_trans_assignment_1 (gfc_expr * expr1, gfc_expr if (expr1->ts.deferred && gfc_expr_attr (expr1).allocatable && gfc_check_dependency (expr1, expr2, true)) - rse.string_length = gfc_evaluate_now (rse.string_length, &rse.pre); + { + /* Add the variable to function scope. */ + tree str_len; + str_len = gfc_create_var_np (TREE_TYPE (rse.string_length), NULL); + gfc_add_decl_to_function (str_len); + gfc_add_modify (&rse.pre, str_len, rse.string_length); + } string_length = rse.string_length; } else causes a regression in dependency_52.f90.