https://gcc.gnu.org/bugzilla/show_bug.cgi?id=86389
--- Comment #9 from Richard Biener <rguenth at gcc dot gnu.org> --- The fortran fail can be reduced to the following with -O1 -fipa-pta, not sure what goes wrong. It looks like part of the a (idx (10:6:-2)) = b (idx (10:6:-2)) stores are wrongly elided. ! PR 19239. Check for various kinds of vector subscript. In this test, ! all vector subscripts are indexing single-dimensional arrays. ! { dg-do run } program main implicit none integer, parameter :: n = 10 integer :: i, j, calls integer, dimension (n) :: a, b, idx, id idx = (/ 3, 1, 5, 2, 4, 10, 8, 7, 6, 9 /) id = (/ (i, i = 1, n) /) b = (/ (i * 100, i = 1, n) /) !------------------------------------------------------------------ ! Tests for a simple variable subscript !------------------------------------------------------------------ a (idx) = b call test (idx, id) a = b (idx) call test (id, idx) a (idx (1:7:3)) = b (idx (10:6:-2)) call test (idx (1:7:3), idx (10:6:-2)) a (idx (10:6:-2)) = b (idx (10:6:-2)) call test (idx (10:6:-2), idx (10:6:-2)) contains subroutine test (lhs, rhs) integer, dimension (:) :: lhs, rhs integer :: i if (size (lhs, 1) .ne. size (rhs, 1)) STOP 11 do i = 1, size (lhs, 1) if (a (lhs (i)) .ne. b (rhs (i))) STOP 12 end do a = 0 end subroutine test end program main