http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50570
janus at gcc dot gnu.org changed: What |Removed |Added ---------------------------------------------------------------------------- Status|NEW |ASSIGNED AssignedTo|unassigned at gcc dot |janus at gcc dot gnu.org |gnu.org | --- Comment #6 from janus at gcc dot gnu.org 2011-10-09 21:15:20 UTC --- (In reply to comment #5) > > How about this? > > Looks as if should work (for comment 0). It does. I'll check for regressions. > (I think the test case in comment 2 is a completely different issue, which > needs a separate fix.) Agreed. Separate, though related. I think the error message is a bug indeed. A way to fix it might be: Index: gcc/fortran/check.c =================================================================== --- gcc/fortran/check.c (revision 179722) +++ gcc/fortran/check.c (working copy) @@ -458,7 +458,8 @@ variable_check (gfc_expr *e, int n, bool allow_pro if (e->expr_type == EXPR_VARIABLE && e->symtree->n.sym->attr.intent == INTENT_IN && (gfc_current_intrinsic_arg[n]->intent == INTENT_OUT - || gfc_current_intrinsic_arg[n]->intent == INTENT_INOUT)) + || gfc_current_intrinsic_arg[n]->intent == INTENT_INOUT) + && !(e->symtree->n.sym->attr.pointer && e->ref)) { gfc_error ("'%s' argument of '%s' intrinsic at %L cannot be INTENT(IN)", gfc_current_intrinsic_arg[n]->name, gfc_current_intrinsic,