https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64578
--- Comment #7 from janus at gcc dot gnu.org --- In fact also a normal class pointer is sufficient to trigger the ICE. It doesn't need to be unlimited, but it needs to be an array: type foo end type print *, associated(return_pointer()) ! ICE contains function return_pointer() class(foo), pointer :: return_pointer(:) end function end