https://gcc.gnu.org/bugzilla/show_bug.cgi?id=113997
--- Comment #3 from Tobias Burnus <burnus at gcc dot gnu.org> --- > Anyway, renaming the binding label, like > subroutine acc_attach_c(x) bind(C, name="acc_attach_renamed") > makes the code compile. Well, the code *does* compile as it is only a warning. * * * I think the problem here is a bit that on the Fortran-user side ('acc_attach' vs. 'acc_attach_c') and on the assembler-level side ('acc_attach_' vs. 'acc_attach') everything is fine (except with -fno-underscore) but, admittedly, not from the Fortran lanaguage side. (On the other hand, Fortran itself is perfectly happy with: 'subroutine foo' and 'subroutine bar() Bind(C, name='foo_')' but that will break with most Fortran compilers.) Thus, the question is whether we (gfortran) want to do something here - or are happy with issuing the semi-correct/semi-bogus warning here. * * * And renaming "acc_attach_c" does not really help as 'acc_attach' with C binding does exist. In this case it exists as: https://gcc.gnu.org/git/?p=gcc.git;a=blob;f=libgomp/oacc-mem.c;hb=refs/heads/master#l944 and renaming would just add another wrapper around it. However, an alternative is the following - which is (nearly) identical, except that GCC does some GFC-CFC and back conversations – independent whether implemented in C or in Fortran: subroutine acc_attach(x) bind(C, name="acc_attach_") use iso_c_binding, only : c_loc implicit none (external, type) type(*), dimension(..), target :: x interface subroutine acc_attach_c(x) bind(C, name="acc_attach") use iso_c_binding type(c_ptr) :: x end subroutine end interface call acc_attach_c(c_loc(x)) end