https://gcc.gnu.org/bugzilla/show_bug.cgi?id=70949
--- Comment #1 from Gerhard Steinmetz <gerhard.steinmetz.fort...@t-online.de> --- This variant works : (as known from several other PRs : change "class" to "type") $ cat z2.f90 program p type t1 end type type t2 type(t1), pointer :: q end type type(t1), pointer :: a type(t2) :: c allocate(a) c%q => a print *, 'a', associated(a, f(c)) contains function f(x) result (z) type(t2), intent(in) :: x type(t1), pointer :: z z => x%q end end