! { dg-do compile } ! { dg-options "-Warray-temporaries" } module foobar type baz integer :: i integer :: j integer :: k integer :: m end type baz contains subroutine foo(a,b,c,i) real, dimension(10) :: a,b type(baz) :: c integer, dimension(10) :: i a(i(1):i(2)) = a(i(1):i(2)) + b(i(1):i(2)) a(i(1):i(2)) = a(i(3):i(5)) ! { dg-warning "Creating array temporary" } a(c%i:c%j) = a(c%i:c%j) + b(c%k:c%m) a(c%k:c%m) = a(c%i:c%j) + b(c%k:c%m) ! { dg-warning "Creating array temporary" } end subroutine foo end module foobar