https://gcc.gnu.org/bugzilla/show_bug.cgi?id=102333
--- Comment #1 from G. Steinmetz <gs...@t-online.de> --- Compiles with "allocatable" instead : $ cat z2.f90 function f(x) result(y) class(*), allocatable :: y contains function g() result(z) procedure(f), allocatable :: z end end