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.