------- Comment #6 from janus at gcc dot gnu dot org 2008-11-01 19:06 ------- The following patch fixes comment #3 and comment #4:
Index: gcc/fortran/expr.c =================================================================== --- gcc/fortran/expr.c (revision 141520) +++ gcc/fortran/expr.c (working copy) @@ -3511,12 +3511,11 @@ static bool replace_symbol (gfc_expr *expr, gfc_symbol *sym, int *i ATTRIBUTE_UNUSED) { if ((expr->expr_type == EXPR_VARIABLE || expr->expr_type == EXPR_FUNCTION) - && expr->symtree->n.sym->ns != sym->formal_ns - && expr->symtree->n.sym->attr.dummy) + && expr->symtree->n.sym->ns == sym->ts.interface->formal_ns) { gfc_symtree *stree; gfc_get_sym_tree (expr->symtree->name, sym->formal_ns, &stree); - stree->n.sym->attr.referenced = expr->symtree->n.sym->attr.referenced; + stree->n.sym->attr = expr->symtree->n.sym->attr; expr->symtree = stree; } return false; Index: gcc/fortran/resolve.c =================================================================== --- gcc/fortran/resolve.c (revision 141515) +++ gcc/fortran/resolve.c (working copy) @@ -8936,6 +8936,9 @@ resolve_symbol (gfc_symbol *sym) sym->ts.cl->resolved = ifc->ts.cl->resolved; sym->ts.cl->length = gfc_copy_expr (ifc->ts.cl->length); gfc_expr_replace_symbols (sym->ts.cl->length, sym); + /* Add charlen to namespace. */ + sym->ts.cl->next = sym->formal_ns->cl_list; + sym->formal_ns->cl_list = sym->ts.cl; } } else if (sym->ts.interface->name[0] != '\0') -- janus at gcc dot gnu dot org changed: What |Removed |Added ---------------------------------------------------------------------------- AssignedTo|unassigned at gcc dot gnu |janus at gcc dot gnu dot org |dot org | Status|NEW |ASSIGNED Last reconfirmed|2008-11-01 14:49:48 |2008-11-01 19:06:52 date| | http://gcc.gnu.org/bugzilla/show_bug.cgi?id=36426