https://gcc.gnu.org/bugzilla/show_bug.cgi?id=104063
--- Comment #1 from Tobias Burnus <burnus at gcc dot gnu.org> --- >From the code, I wonder whether a 'ref->type == REF_ARRAY' is missing as ... if (e->expr_type == EXPR_VARIABLE && e->ref && e->ref->u.ar.type == AR_FULL ... and whether more is needed to handle derived type components. In particular, the code has: class(*) :: x(..) call s(x) ! Used to ICE here with "s"'s dummy being 'type(*) :: x(..)'. (I wonder whether that translates to x%_data(AR_FULL).) Hence, use 'gfc_array_ref *ar = gfc_find_array_ref (...)' here?