https://gcc.gnu.org/bugzilla/show_bug.cgi?id=94070
--- Comment #11 from sandra at gcc dot gnu.org --- There are still some bugs present with class arrays. E.g., this test case ICEs: module m type :: t integer :: id real :: xyz(3) end type contains subroutine testit2p(a) class(t), pointer :: a(..) print *, shape(a) end subroutine end module SHAPE is implemented as a library call and it's trying to copy the pointer array to a temporary instead of just dereferencing it. I'm looking at replacing that logic to handle it inline same as LBOUND/UBOUND.