https://gcc.gnu.org/bugzilla/show_bug.cgi?id=106999
--- Comment #1 from G. Steinmetz <gs...@t-online.de> --- FYI, a directly matching variant compiles : $ cat z2.f90 program p type t procedure(g), pointer :: f end type class(t), allocatable :: z call s(z%f) contains subroutine g(x) class(t) :: x end subroutine s(x) procedure(g) :: x end end