comparison libgomp/testsuite/libgomp.fortran/omp_atomic2.f90 @ 0:a06113de4d67

first commit
author kent <kent@cr.ie.u-ryukyu.ac.jp>
date Fri, 17 Jul 2009 14:47:48 +0900
parents
children 84e7813d76e9
comparison
equal deleted inserted replaced
-1:000000000000 0:a06113de4d67
1 ! { dg-do run }
2 real, dimension (20) :: r
3 integer, dimension (20) :: d
4 integer :: i, j, k, n
5 integer (kind = 2) :: a, b, c
6
7 do 10 i = 1, 20
8 r(i) = i
9 10 d(i) = 21 - i
10
11 n = 20
12 call foo (r, d, n)
13
14 if (n .ne. 22) call abort
15 if (any (r .ne. 33)) call abort
16
17 i = 1
18 j = 18
19 k = 23
20 !$omp atomic
21 i = min (i, j, k, n)
22 if (i .ne. 1) call abort
23 !$omp atomic
24 i = max (j, n, k, i)
25 if (i .ne. 23) call abort
26
27 a = 1
28 b = 18
29 c = 23
30 !$omp atomic
31 a = min (a, b, c)
32 if (a .ne. 1) call abort
33 !$omp atomic
34 a = max (a, b, c)
35 if (a .ne. 23) call abort
36
37 contains
38 function bar (i)
39 real bar
40 integer i
41 bar = 12.0 + i
42 end function bar
43
44 subroutine foo (x, y, n)
45 integer i, y (*), n
46 real x (*)
47 do i = 1, n
48 !$omp atomic
49 x(y(i)) = x(y(i)) + bar (i)
50 end do
51 !$omp atomic
52 n = n + 2
53 end subroutine foo
54 end