Index: gcc/fortran/ChangeLog
===================================================================
--- gcc/fortran/ChangeLog	(Revision 194620)
+++ gcc/fortran/ChangeLog	(Arbeitskopie)
@@ -1,4 +1,10 @@
 2012-12-19  Tobias Burnus  <burnus@net-b.de>
+
+	PR fortran/55733
+	* trans-decl.c (gfc_create_string_length): Avoid setting
+	TREE_STATIC for automatic variables with -fno-automatic.
+
+2012-12-19  Tobias Burnus  <burnus@net-b.de>
 	    Jakub Jelinek  <jakub@redhat.com>
 	    Janus Weil  <janus@gcc.gnu.org>
 
Index: gcc/fortran/trans-decl.c
===================================================================
--- gcc/fortran/trans-decl.c	(Revision 194620)
+++ gcc/fortran/trans-decl.c	(Arbeitskopie)
@@ -1089,9 +1089,15 @@ gfc_create_string_length (gfc_symbol * sym)
       tree length;
       const char *name;
 
+      /* The string length variable shall be in static memory if it is either
+	 explicitly SAVED, a module variable or with -fno-automatic. Only
+	 relevant is "len=:" - otherwise, it is either a constant length or
+	 it is an automatic variable.  */
       bool static_length = sym->attr.save
 			   || sym->ns->proc_name->attr.flavor == FL_MODULE
-			   || gfc_option.flag_max_stack_var_size == 0;
+			   || (gfc_option.flag_max_stack_var_size == 0
+			       && sym->ts.deferred && !sym->attr.dummy
+			       && !sym->attr.result && !sym->attr.function);
 
       /* Also prefix the mangled name. We need to call GFC_PREFIX for static
 	 variables as some systems do not support the "." in the assembler name.
