diff gcc/testsuite/gfortran.dg/pr65450.f90 @ 111:04ced10e8804

gcc 7
author kono
date Fri, 27 Oct 2017 22:46:09 +0900
parents
children 84e7813d76e9
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gcc/testsuite/gfortran.dg/pr65450.f90	Fri Oct 27 22:46:09 2017 +0900
@@ -0,0 +1,35 @@
+! PR tree-optimization/65450
+! { dg-do run }
+! { dg-additional-options "-mtune=amdfam10" { target x86_64-*-* i?86-*-* } }
+
+program pr65450
+  integer :: n, m, o, i, k
+  double precision :: u(500,60,3), h(500,60,3)
+  double precision :: v(500,60)
+  u = 0
+  h = 0
+  o = 1
+  m = 2
+  n = 3
+  do k = 1, 50
+    v = foo (u(:,:,m))
+    u(2:499,1:60,n) = u(2:499,1:60,o)+16.d0
+    h(1:500,2:59,n) = h(1:500,2:59,o)-4.d0*v(1:500,2:59)-32.0d0
+    i = o
+    o = m
+    m = n
+    n = i
+  end do
+  if (abs (v(17, 23) + h(17, 23, 2) + 768.0d0) > 0.5d0) call abort
+contains
+  function foo(a)
+    double precision :: a(:,:)
+    double precision :: foo(size(a,dim=1),size(a,dim=2))
+    integer :: i, j
+    i = size(a,dim=1)
+    j = size(a,dim=2)
+    foo(2:i-1,1:j) = a(3:i,1:j)-a(1:i-2,1:j)
+    foo(1,1:j) = 2*(a(2,1:j)-a(1,1:j))
+    foo(i,1:j) = 2*(a(i,1:j)-a(i-1,1:j))
+  end function foo
+end program pr65450