http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50659
--- Comment #11 from janus at gcc dot gnu.org 2011-10-08 15:08:25 UTC ---
Here is an alternative patch to the one in comment #4:
Index: gcc/fortran/expr.c
===================================================================
--- gcc/fortran/expr.c (revision 179710)
+++ gcc/fortran/expr.c (working copy)
@@ -4144,7 +4144,8 @@ replace_symbol (gfc_expr *expr, gfc_symbol *sym, i
if ((expr->expr_type == EXPR_VARIABLE
|| (expr->expr_type == EXPR_FUNCTION
&& !gfc_is_intrinsic (expr->symtree->n.sym, 0, expr->where)))
- && expr->symtree->n.sym->ns == sym->ts.interface->formal_ns)
+ && expr->symtree->n.sym->ns == sym->ts.interface->formal_ns
+ && expr->symtree->n.sym->attr.dummy)
{
gfc_symtree *stree;
gfc_namespace *ns = sym->formal_ns;
We simply forgot to check if the symbol we're replacing is actually a dummy
argument! This even qualifies as obvious, I think ...