From patchwork Thu Jun 7 14:35:41 2012 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Subject: [fortran,committed] Fix regression introduced by PR 52861 patch Date: Thu, 07 Jun 2012 04:35:41 -0000 From: Thomas Koenig X-Patchwork-Id: 163638 Message-Id: <4FD0BC3D.7070606@netcologne.de> To: "fortran@gcc.gnu.org" , gcc-patches 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 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 PR fortran/52861 * gfortran.dg/string_assign_2.f90: New test case. Index: frontend-passes.c =================================================================== --- frontend-passes.c (Revision 188300) +++ frontend-passes.c (Arbeitskopie) @@ -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; }