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

--- Comment #10 from Harald Anlauf <anlauf at gcc dot gnu.org> ---
(In reply to David Binderman from comment #9)
> As expected:
> 
> trunk $ git bisect bad ee9ded19244ab887
> ee9ded19244ab887759eb3faef452ee70316835e is the first bad commit
> commit ee9ded19244ab887759eb3faef452ee70316835e (HEAD)
> Author: Harald Anlauf <[email protected]>
> Date:   Thu Dec 4 22:16:10 2025 +0100
> 
>     Fortran: associate to a contiguous pointer or target [PR122977]
>     
>             PR fortran/122977
> 
> Adding Harald for their opinion.

When I add option -std=f2023 the code is rejected:

pr125606.f90:20:27:

   20 |           write (unit) loc(p(2)%c1)
      |                           1
Error: Explicit interface required for polymorphic argument at (1)
pr125606.f90:24:24:

   24 |           write (7) loc(t(2)%c2e)
      |                        1
Error: Explicit interface required for polymorphic argument at (1)

This makes sense: LOC() is an extension.
So shall we accept it nonetheless?

I looked at C_LOC(), which has (F2023:18.2.3.7):

"Argument. X shall have either the POINTER or TARGET attribute. It shall not
be a coindexed object. It shall be a variable with interoperable type and
kind type parameters, an assumed-type variable, or a nonpolymorphic
variable that has no length type parameter. If it is allocatable, it shall
be allocated. If it is a pointer, it shall be associated. If it is an
array, it shall be contiguous and have nonzero size. It shall not be a
zero-length string."

Steve, any opinions?

Reply via email to