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