! { dg-do run } ! { dg-additional-options "-O -fdump-tree-optimized" } module y implicit none contains subroutine foo(a,b,c,d,e,f) real, dimension(1), intent(inout) :: a, b, c, d, e, f if (any([a,b,c,d,e,f] /= [1,2,3,4,5,6])) stop 1 a = -a b = -b c = -c d = -d e = -e f = -f end subroutine foo end module y module x use y implicit none contains subroutine bar(a) real, dimension(:) :: a integer :: n1, n3, n5 n1 = 1 n3 = 3 n5 = 5 call foo(a(n1:n1), a(n1+1:n1+1), a(n3:n3), a(n3+1:n3+1), a(n5:n5), a(n5+1:n5+1)) end subroutine bar end module x program main use x real, dimension(6) :: a,b b = [1,2,3,4,5,6] a = b call bar(a) if (any(a /= -b)) stop 2 end program main ! { dg-final { scan-tree-dump-not "contiguous" "optimized" } }