------- Comment #4 from burnus at gcc dot gnu dot org 2009-06-23 08:34 ------- (In reply to comment #3) > This patch gives the correct error messages for comment #1
> + && actual->ts.derived && actual->ts.derived->ts.is_iso_c > + && (formal->ts.derived->attr.use_rename > + || actual->ts.derived->attr.use_rename)) I think that is wrong - the problem is TYPE(c_PTR) vs TYPE(C_FUNPTR) and not the renaming. I think that will fail for: use iso_c_binding, c_ptr2 => c_ptr type(c_ptr2) :: fun procedure(), pointer :: bar call c_f_procpointer(fun,bar) ! << fun is c_ptr not c_funptr end Maybe something using (fsym.intmod_sym_id == actual.intmod_sym_id) where intmod_sym_id is either ISOCBINDING_PTR / ISOCBINDING_FUNPTR. (That may fail - I don't know how the interface is defined for c_f_{proc}pointer, it might miss this information.) -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=38894