http://gcc.gnu.org/bugzilla/show_bug.cgi?id=56378
--- Comment #5 from Joost VandeVondele <Joost.VandeVondele at mat dot ethz.ch> 2013-02-18 18:48:28 UTC --- simplified testcase: module t use, intrinsic :: iso_c_binding interface fvec2vec module procedure int_fvec2vec end interface contains function int_fvec2vec (f_vec, n) result (c_vec) integer f_vec(:) integer(c_int), target :: c_vec(n) end function int_fvec2vec subroutine lat_to_c (Fp, C) bind(c) integer, allocatable :: ic(:) call lat_to_c2 (c_loc(fvec2vec(ic, n1_ic))) end subroutine lat_to_c end module looks like related to having a c_loc on an interfacedd function result.