Index: gcc/fortran/trans-expr.c =================================================================== *** gcc/fortran/trans-expr.c (revision 264724) --- gcc/fortran/trans-expr.c (working copy) *************** gfc_trans_assignment_1 (gfc_expr * expr1 *** 10208,10214 **** string_length = gfc_evaluate_now (rse.string_length, &rse.pre); else if (expr2->ts.type == BT_CHARACTER) { ! if (expr1->ts.deferred && gfc_check_dependency (expr1, expr2, false)) rse.string_length = gfc_evaluate_now (rse.string_length, &rse.pre); string_length = rse.string_length; } --- 10208,10216 ---- string_length = gfc_evaluate_now (rse.string_length, &rse.pre); else if (expr2->ts.type == BT_CHARACTER) { ! if (expr1->ts.deferred ! && rss != gfc_ss_terminator && lss != gfc_ss_terminator ! && gfc_check_dependency (expr1, expr2, false)) rse.string_length = gfc_evaluate_now (rse.string_length, &rse.pre); string_length = rse.string_length; }