Patchwork [fortran,committed] Fix regression introduced by PR 52861 patch

login
register
mail settings
Submitter Thomas Koenig
Date June 7, 2012, 2:35 p.m.
Message ID <4FD0BC3D.7070606@netcologne.de>
Download mbox | patch
Permalink /patch/163638/
State New
Headers show

Comments

Thomas Koenig - June 7, 2012, 2:35 p.m.
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.

Patch

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;
     }