https://gcc.gnu.org/bugzilla/show_bug.cgi?id=113997
Thomas Koenig <tkoenig at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Keywords|needs-stdcheck | --- Comment #8 from Thomas Koenig <tkoenig at gcc dot gnu.org> --- (In reply to Thomas Koenig from comment #7) > Hm, I am not actually sure that the code is correct. > I think I will ask on the J3 mailing list. Forget the last comment, I was getting confused about the two 'x' in the test case; this test case fails as well, and should not: subroutine acc_attach(x) use iso_c_binding, only : c_loc implicit none (external, type) type(*), dimension(..), target :: x interface subroutine acc_attach_c(a) bind(C, name="acc_attach") use iso_c_binding type(c_ptr) :: a end subroutine end interface call acc_attach_c(c_loc(x)) end which gives asdf.f90:8:5: 8 | subroutine acc_attach_c(a) bind(C, name="acc_attach") | 1~~~~~~~~~~~~~~~~~~~~~~ Warning: Interface mismatch in global procedure 'acc_attach_c' at (1): Type mismatch in argument 'a' (TYPE(c_ptr)/TYPE(*)) It seems that the code checking for the global procedure looks through the c_loc() call, and it should not.