https://gcc.gnu.org/bugzilla/show_bug.cgi?id=99545
--- Comment #6 from Jürgen Reuter <juergen.reuter at desy dot de> --- Voila, here is a short reproducer: module commands implicit none private type, abstract :: range_t integer :: step_mode = 0 integer :: n_step = 0 end type range_t type, extends (range_t) :: range_int_t integer :: i_step = 0 end type range_int_t type, extends (range_t) :: range_real_t real :: lr_step = 0 end type range_real_t type :: cmd_scan_t private class(range_t), dimension(:), allocatable :: range contains procedure :: compile => cmd_scan_compile end type cmd_scan_t contains subroutine cmd_scan_compile (cmd) class(cmd_scan_t), intent(inout) :: cmd allocate (range_int_t :: cmd%range (3)) allocate (range_real_t :: cmd%range (3)) end subroutine cmd_scan_compile end module commands