This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug fortran/36426] Endless loop in gfc_apply_interface_mapping_to_expr
- From: "janus at gcc dot gnu dot org" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: 1 Nov 2008 19:06:52 -0000
- Subject: [Bug fortran/36426] Endless loop in gfc_apply_interface_mapping_to_expr
- References: <bug-36426-13404@http.gcc.gnu.org/bugzilla/>
- Reply-to: gcc-bugzilla at gcc dot gnu dot org
------- 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