URL
https://opencores.org/ocsvn/openrisc/openrisc/trunk
Subversion Repositories openrisc
[/] [openrisc/] [trunk/] [gnu-dev/] [or1k-gcc/] [gcc/] [testsuite/] [gfortran.fortran-torture/] [execute/] [forall_7.f90] - Rev 695
Compare with Previous | Blame | View Log
! tests FORALL statements with a maskprogram forall_7real, dimension (5, 5, 5, 5) :: a, b, c, da (:, :, :, :) = 4forall (i = 1:5)a (i, i, 6 - i, i) = 7end forallforall (i = 1:5)a (i, 6 - i, i, i) = 7end forallforall (i = 1:5)a (6 - i, i, i, i) = 7end forallforall (i = 1:5:2)a (1, 2, 3, i) = 0end forallb = ac = ad = aforall (i = 1:5, j = 1:5, k = 1:5, ((a (i, j, k, i) .gt. 6) .or. (a (i, j, k, j) .gt. 6)))forall (l = 1:5, a (1, 2, 3, l) .lt. 2)a (i, j, k, l) = i - j + k - l + 0.5end forallend forallforall (l = 1:5, b (1, 2, 3, l) .lt. 2)forall (i = 1:5, j = 1:5, k = 1:5, ((b (i, j, k, i) .gt. 6) .or. (b (i, j, k, j) .gt. 6)))b (i, j, k, l) = i - j + k - l + 0.5end forallend forallforall (i = 1:5, j = 1:5, k = 1:5, ((c (i, j, k, i) .gt. 6) .or. (c (i, j, k, j) .gt. 6)))forall (l = 1:5, c (1, 2, 3, l) .lt. 2)c (i, j, k, l) = i - j + k - l + 0.5 + c (l, k, j, i)end forallend forallforall (l = 1:5, d (1, 2, 3, l) .lt. 2)forall (i = 1:5, j = 1:5, k = 1:5, ((d (i, j, k, i) .gt. 6) .or. (d (i, j, k, j) .gt. 6)))d (i, j, k, l) = i - j + k - l + 0.5 + d (l, k, j, i)end forallend foralldo i = 1, 5do j = 1, 5do k = 1, 5do l = 1, 5r = 4if ((i == j .and. k == 6 - i) .or. (i == k .and. j == 6 - i)) thenif (l /= 2 .and. l /= 4) thenr = 1elseif (l == i) thenr = 7end ifelseif (j == k .and. i == 6 - j) thenif (l /= 2 .and. l /= 4) thenr = 1elseif (l == j) thenr = 7end ifelseif (i == 1 .and. j == 2 .and. k == 3 .and. l /= 2 .and. l /= 4) thenr = 0end ifs = rif (r == 1) thenr = i - j + k - l + 0.5if (((l == k .and. j == 6 - l) .or. (l == j .and. k == 6 - l)) .and. (i == l)) thens = r + 7elseif (k == j .and. l == 6 - k .and. i == k) thens = r + 7elseif (l /= 1 .or. k /= 2 .or. j /= 3 .or. i == 2 .or. i == 4) thens = r + 4elses = rend ifend ifif (a (i, j, k, l) /= r) call abort ()if (c (i, j, k, l) /= s) call abort ()end doend doend doend doif (any (a /= b .or. c /= d)) call abort ()end
