! { dg-do run }
! { dg-options "-Warray-temporaries" }
! No temporary should be generated in this case.
program main
  implicit none
  integer :: i,n
  integer :: a(10)
  integer :: b(10)
  do i=1,10
     a(i) = i
     b(i) = i
  end do
  n = 1
  ! Same result when assigning to a or b
  b(n+1:10:4) = a(n+2:8:2)
  a(n+1:10:4) = a(n+2:8:2)
  if (any (a/=b)) call abort
end program main