12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455 |
- ! { dg-do run }
- real, dimension (20) :: r
- integer, dimension (20) :: d
- integer :: i, j, k, n
- integer (kind = 2) :: a, b, c
- do 10 i = 1, 20
- r(i) = i
- 10 d(i) = 21 - i
- n = 20
- call foo (r, d, n)
- if (n .ne. 22) call abort
- if (any (r .ne. 33)) call abort
- i = 1
- j = 18
- k = 23
- !$omp atomic
- i = min (i, j, k, n)
- if (i .ne. 1) call abort
- !$omp atomic
- i = max (j, n, k, i)
- if (i .ne. 23) call abort
- a = 1
- b = 18
- c = 23
- !$omp atomic
- a = min (a, b, c)
- if (a .ne. 1) call abort
- !$omp atomic
- a = max (a, b, c)
- if (a .ne. 23) call abort
- contains
- function bar (i)
- real bar
- integer i
- bar = 12.0 + i
- end function bar
- subroutine foo (x, y, n)
- integer i, y (*), n
- real x (*)
- do i = 1, n
- !$omp atomic
- x(y(i)) = x(y(i)) + bar (i)
- end do
- !$omp atomic
- n = n + 2
- end subroutine foo
- end
|