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