------- Comment #3 from pault at gcc dot gnu dot org  2006-06-21 20:35 -------
Here is a patch that regtests OK.  I need to check it out, get it ready for
submission, write a formal testcase and check what else it fixes.

Paul

Index: gcc/fortran/trans-array.c
===================================================================
*** gcc/fortran/trans-array.c   (revision 114823)
--- gcc/fortran/trans-array.c   (working copy)
*************** gfc_conv_expr_descriptor (gfc_se * se, g
*** 4198,4203 ****
--- 4198,4224 ----
            }
          else
            {
+             gfc_ref *char_ref = expr->ref;
+ 
+             if (expr->ts.cl == NULL)
+               for (; char_ref; char_ref = char_ref->next)
+                 if (char_ref->type == REF_SUBSTRING)
+                   {
+                     mpz_t char_len;
+                     expr->ts.cl = char_ref->u.ss.length;
+                     mpz_init_set_ui (char_len, 1);
+                     mpz_add (char_len, char_len,
+                              char_ref->u.ss.end->value.integer);
+                     mpz_sub (char_len, char_len,
+                              char_ref->u.ss.start->value.integer);
+                     expr->ts.cl->backend_decl
+                       = convert (gfc_charlen_type_node,
+                                  gfc_conv_mpz_to_tree (char_len,
+                                      gfc_default_character_kind));
+                     mpz_clear (char_len);
+                     break;
+                   }
+ 
              loop.temp_ss->data.temp.type
                = gfc_typenode_for_spec (&expr->ts);
              loop.temp_ss->string_length = expr->ts.cl->backend_decl;


-- 

pault at gcc dot gnu dot org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
         AssignedTo|unassigned at gcc dot gnu   |pault at gcc dot gnu dot org
                   |dot org                     |
             Status|UNCONFIRMED                 |ASSIGNED
     Ever Confirmed|0                           |1
   Last reconfirmed|0000-00-00 00:00:00         |2006-06-21 20:35:25
               date|                            |


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=28118

Reply via email to