! { dg-do run } ! ! Test the fix for PR84074 ! ! Contributed by Vladimir Fuka ! type :: t integer :: n end type type(t) :: array(4) = [t(1),t(2),t(3),t(4)] call sub(array((/3,1/)), [3,1,0,0]) ! Does not increment any elements of 'array'. call sub(array(1:3:2), [1,3,0,0]) call sub(array(3:1:-2), [4,2,0,0]) call sub(array, [3,2,5,4]) ! Elements 1 and 3 should have been incremented twice. contains subroutine sub(a, iarray) class(t) :: a(:) integer :: iarray(4) integer :: i do i=1,size(a) if (a(i)%n .ne. iarray(i)) STOP 1 a(i)%n = a(i)%n+1 enddo end subroutine end program