1! PR tree-optimization/65450
2! { dg-do run }
3! { dg-additional-options "-mtune=amdfam10" { target x86_64-*-* i?86-*-* } }
4
5program pr65450
6  integer :: n, m, o, i, k
7  double precision :: u(500,60,3), h(500,60,3)
8  double precision :: v(500,60)
9  u = 0
10  h = 0
11  o = 1
12  m = 2
13  n = 3
14  do k = 1, 50
15    v = foo (u(:,:,m))
16    u(2:499,1:60,n) = u(2:499,1:60,o)+16.d0
17    h(1:500,2:59,n) = h(1:500,2:59,o)-4.d0*v(1:500,2:59)-32.0d0
18    i = o
19    o = m
20    m = n
21    n = i
22  end do
23  if (abs (v(17, 23) + h(17, 23, 2) + 768.0d0) > 0.5d0) call abort
24contains
25  function foo(a)
26    double precision :: a(:,:)
27    double precision :: foo(size(a,dim=1),size(a,dim=2))
28    integer :: i, j
29    i = size(a,dim=1)
30    j = size(a,dim=2)
31    foo(2:i-1,1:j) = a(3:i,1:j)-a(1:i-2,1:j)
32    foo(1,1:j) = 2*(a(2,1:j)-a(1,1:j))
33    foo(i,1:j) = 2*(a(i,1:j)-a(i-1,1:j))
34  end function foo
35end program pr65450
36