! { dg-do run } ! ! PR fortran/102043 ! The middle-end used to conclude from array indexing that the index ! should be non-negative and thus that array accesses to reversed arrays ! (i.e. with negative strides) only access the last element of the array, ! as the access involves a pointer to array that is initialized to point ! to the last element in the case of a reversed array. program main integer, dimension (4) :: idx, a, b a = (/ 11, 13, 17, 19 /) idx = (/ 1, 2, 3, 4 /) a(idx(4:1:-1)) = idx if (a(1).ne.4) STOP 1 end program main