https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67740

--- Comment #7 from anlauf at gcc dot gnu.org ---
The following snippet in gfc_trans_pointer_assignment looks suspicious:

      if (expr1->ts.type == BT_CHARACTER
          && expr1->symtree->n.sym->ts.deferred
          && expr1->symtree->n.sym->ts.u.cl->backend_decl
          && VAR_P (expr1->symtree->n.sym->ts.u.cl->backend_decl))
        {
          tmp = expr1->symtree->n.sym->ts.u.cl->backend_decl;
          if (expr2->expr_type != EXPR_NULL)
            gfc_add_modify (&block, tmp,
                            fold_convert (TREE_TYPE (tmp), strlen_rhs));
          else
            gfc_add_modify (&block, tmp, build_zero_cst (TREE_TYPE (tmp)));
        }

I wonder whether it should read:

      if (expr1->ts.type == BT_CHARACTER
          && expr1->ts.deferred
...

Furthermore, expr1->ts.u.cl->backend_decl appears not set properly,
and I fail to see why.

Reply via email to