! { dg-do run } ! { dg-additional-options "-ffrontend-optimize -Warray-temporaries" } ! PR 93113 - this used to ICE, and should not generate a temporary. program main integer, parameter :: n = 10 complex, dimension(n,n) :: a, b, c real, dimension(n,n) :: r call random_number (r) c%re = r call random_number (r) c%im = r a = c b = c b%re = a%re - 0.5 b%im = a%im - 0.5 a%re = a%re - 0.5 a%im = a%im - 0.5 if (any (a /= b)) stop 1 b%im = a%re a%im = a%re if (any (a /= b)) stop 2 a = c b = c b(2:n,:)%re = a(1:n-1,:)%re a(2:n,:)%re = a(1:n-1,:)%re if (any (a /= b)) stop 3 a = c b = c b(1:n-1,:)%im = a(2:,:)%im a(1:n-1,:)%im = a(2:,:)%im if (any (a /= b)) stop 3 end program main