https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66973
--- Comment #6 from Scot Breitenfeld <brtnfld at hdfgroup dot org> --- it also works if you add USE ISO_C_BINDING to the main program: PROGRAM main USE ISO_C_BINDING USE H5T IMPLICIT NONE REAL, TARGET :: val CALL pickone(C_LOC(val)) END PROGRAM main