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

Thomas Koenig <tkoenig at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |tkoenig at gcc dot gnu.org
           Keywords|rejects-valid               |needs-stdcheck
             Status|NEW                         |WAITING

--- Comment #3 from Thomas Koenig <tkoenig at gcc dot gnu.org> ---
(In reply to urbanjost from comment #0)

> gfortran -c xbug.f90
> xbug.f90:42:27:
> 
>    13 |    function c_remove(c_path) bind(c,name="remove") result(c_err)
>       |   2                        
> ......
>    42 |       call remove(self%key)
>       |                           1
> Error: Global binding name ‘remove’ at (1) is already being used as a
> FUNCTION at (2)

Hmm... I believe this is code is invalid, and gfortran is right
in issuing the error.

According to F2023, 19.2, Global identifiers, the binding label "remove"
is a global identifier, as is the name of an external procedure
which you call (without a prototype or importing it from a module)
as

      call remove(self%key)

Also, "The global identifier of an entity shall not be the same as the global
identifier of any other entity. Furthermore, a binding label shall not be the
same as the global identifier of any other global entity, ignoring differences
in case."

Comments?

Reply via email to