https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82550
--- Comment #2 from Paul Thomas <pault at gcc dot gnu.org> --- (In reply to Dominique d'Humieres from comment #1) > Confirmed from 6.4 up to trunk (8.0). Adding a reference to 'p' in 'foo' clears the problem. module subroutine foo(fun_ptr) procedure(p), pointer, intent(out) :: fun_ptr call p() fun_ptr => p end subroutine I rather think that the pointer assignment is not setting 'p' as referenced. Investigating..... Paul