xref: /openbsd-src/gnu/gcc/libgomp/testsuite/libgomp.fortran/omp_atomic1.f90 (revision 404b540a9034ac75a6199ad1a32d1bbc7a0d4210)
1*404b540aSrobert! { dg-do run }
2*404b540aSrobert    integer (kind = 4) :: a
3*404b540aSrobert    integer (kind = 2) :: b
4*404b540aSrobert    real :: c, f
5*404b540aSrobert    double precision :: d
6*404b540aSrobert    integer, dimension (10) :: e
7*404b540aSrobert    a = 1
8*404b540aSrobert    b = 2
9*404b540aSrobert    c = 3
10*404b540aSrobert    d = 4
11*404b540aSrobert    e = 5
12*404b540aSrobert    f = 6
13*404b540aSrobert!$omp atomic
14*404b540aSrobert    a = a + 4
15*404b540aSrobert!$omp atomic
16*404b540aSrobert    b = 4 - b
17*404b540aSrobert!$omp atomic
18*404b540aSrobert    c = c * 2
19*404b540aSrobert!$omp atomic
20*404b540aSrobert    d = 2 / d
21*404b540aSrobert    if (a .ne. 5 .or. b .ne. 2 .or. c .ne. 6 .or. d .ne. 0.5) call abort
22*404b540aSrobert    d = 1.2
23*404b540aSrobert!$omp atomic
24*404b540aSrobert    a = a + c + d
25*404b540aSrobert!$omp atomic
26*404b540aSrobert    b = b - (a + c + d)
27*404b540aSrobert    if (a .ne. 12 .or. b .ne. -17) call abort
28*404b540aSrobert!$omp atomic
29*404b540aSrobert    a = c + d + a
30*404b540aSrobert!$omp atomic
31*404b540aSrobert    b = a + c + d - b
32*404b540aSrobert    if (a .ne. 19 .or. b .ne. 43) call abort
33*404b540aSrobert!$omp atomic
34*404b540aSrobert    b = (a + c + d) - b
35*404b540aSrobert    a = 32
36*404b540aSrobert!$omp atomic
37*404b540aSrobert    a = a / 3.4
38*404b540aSrobert    if (a .ne. 9 .or. b .ne. -16) call abort
39*404b540aSrobertend
40