Comments
Patch
===================================================================
@@ -740,8 +740,10 @@ optimize_assignment (gfc_code * c)
/* Optimize away a = trim(b), where a is a character variable. */
remove_trim (rhs);
- /* Replace a = ' ' by a = '' to optimize away a memcpy. */
- if (empty_string(rhs))
+ /* Replace a = ' ' by a = '' to optimize away a memcpy, but only
+ for strings with non-deferred length (otherwise we would
+ reallocate the length. */
+ if (empty_string(rhs) && ! lhs->ts.deferred)
rhs->value.character.length = 0;
}
Hello world, my recent patch introduced a regression with deferred-length characters. I have committed the attached patch as obvious to fix this. Regards Thomas 2012-06-07 Thomas König <tkoenig@gcc.gnu.org> PR fortran/52861 * frontend-passes.c (optimize_assignment): Don't set the length of an empty string for deferred-length character variables. 2012-06-07 Thomas König <tkoenig@gcc.gnu.org> PR fortran/52861 * gfortran.dg/string_assign_2.f90: New test case.