https://gcc.gnu.org/bugzilla/show_bug.cgi?id=119994

kargls at comcast dot net changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |kargls at comcast dot net

--- Comment #3 from kargls at comcast dot net ---
(In reply to anlauf from comment #2)
> Confirmed.
> 
> The following patch fixes both cases:
> 
> diff --git a/gcc/fortran/expr.cc b/gcc/fortran/expr.cc
> index 07e9bac37a1..46ca7874603 100644
> --- a/gcc/fortran/expr.cc
> +++ b/gcc/fortran/expr.cc
> @@ -3550,7 +3664,7 @@ check_restricted (gfc_expr *e)
>         break;
>       }
>  
> -      if (sym->attr.intent == INTENT_OUT)
> +      if (sym->attr.intent == INTENT_OUT && sym->ns == gfc_current_ns)
>       {
>         gfc_error ("Dummy argument %qs at %L cannot be INTENT(OUT)",
>                    sym->name, &e->where);
> 
> 
> Needs further testing.

Note, Neil has asked on the J3 mailing list for clarification as there
seems to be a conflict on the requirements of a restricted expression.

   F2023, 10.1.11
   ...
   A restricted expression is an expression in which each operation is
   intrinsic or defined by a specification function and each primary is
   ...
   (2) an object designator with a base object that is a dummy argument
       that has neither the OPTIONAL nor the INTENT(OUT) attribute,
   ...
   (4) an object designator with a base object that is made accessible
       by use or host association,

Reply via email to