https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82969
--- Comment #1 from G. Steinmetz <gs...@t-online.de> --- These variants compile : $ cat z2.f90 module m type t real, allocatable :: x(:) procedure(f), nopass, pointer :: g end type contains function f() result(z) class(t), pointer :: z end end $ cat z3.f90 module m type t procedure(f), nopass, pointer :: g end type contains function f() result(z) class(t), allocatable :: z end end