! { dg-do run } ! ! Test the fix for PR92976, in which the TYPE IS statement caused an ICE ! because of the explicit bounds of 'x'. ! ! Contributed by Gerhard Steinmetz ! program p type t integer :: i end type class(t), allocatable :: c(:) allocate (c, source = [t(1111),t(2222),t(3333)]) call s(c) if (sum (c%i) .ne. 3333) stop 1 contains subroutine s(x) class(t) :: x(2) select type (x) ! ICE as compiler attempted to assign descriptor to an array type is (t) x%i = 0 ! Make sure that bounds are correctly translated. call counter (x) end select end subroutine counter (arg) type(t) :: arg(:) if (size (arg, 1) .ne. 2) stop 2 end end