Message ID | 5C7EE085.7020502@gmx.de |
---|---|
State | New |
Headers | show |
Series | [PR,fortran/71203] - ICE on zero-length arrays or substrings | expand |
Hi Harald, > To the reviewer: I am not 100% sure that my solution is correct, but it > solves the issues reported and regtests cleanly on x86_64-pc-linux-gnu. > > OK for trunk? Backports? I don't see how adding the charlen to the current namespace can hurt, so I think this is OK. Regarding backports: I don't think we need to backport every bug fix if does not fix a regression. (Officially, we are not even supposed to fix non-regressions on trunk at this point, but in practice this means that we should take care not to introduce risky patches. gfortran is not release critical, so we are free to break our own compiler without holding up all of gcc). Regards Thomas
Committed as rev.269444 to trunk, rev.269445 to 8-branch. Thanks for the review! Harald On 03/06/19 00:07, Thomas Koenig wrote: > Hi Harald, > >> To the reviewer: I am not 100% sure that my solution is correct, but it >> solves the issues reported and regtests cleanly on x86_64-pc-linux-gnu. >> >> OK for trunk? Backports? > > I don't see how adding the charlen to the current namespace can hurt, > so I think this is OK. > > Regarding backports: I don't think we need to backport every bug fix > if does not fix a regression. (Officially, we are not even > supposed to fix non-regressions on trunk at this point, but in practice > this means that we should take care not to introduce risky patches. > gfortran is not release critical, so we are free to break our own > compiler without holding up all of gcc). > > Regards > > Thomas >
Index: gcc/fortran/expr.c =================================================================== --- gcc/fortran/expr.c (revision 269400) +++ gcc/fortran/expr.c (working copy) @@ -1897,8 +1897,14 @@ string_len = 0; if (!p->ts.u.cl) - p->ts.u.cl = gfc_new_charlen (p->symtree->n.sym->ns, - NULL); + { + if (p->symtree) + p->ts.u.cl = gfc_new_charlen (p->symtree->n.sym->ns, + NULL); + else + p->ts.u.cl = gfc_new_charlen (gfc_current_ns, + NULL); + } else gfc_free_expr (p->ts.u.cl->length);