gcc/libgomp/testsuite/libgomp.fortran/atomic1.f90

47 lines
858 B
Fortran
Raw Normal View History

! PR fortran/92899
program pr92899
real :: x = 1.0
double precision :: y
integer(kind=4) :: z = 4
integer(kind=8) :: w
!$omp atomic capture
y = x
x = 2.0
!$omp end atomic
if (y /= 1.0 .or. x /= 2.0) stop 1
!$omp atomic capture
x = y
y = 3.0
!$omp end atomic
if (x /= 1.0 .or. y /= 3.0) stop 2
!$omp atomic capture
w = z
z = 5
!$omp end atomic
if (w /= 4 .or. z /= 5) stop 3
!$omp atomic capture
z = w
w = 6
!$omp end atomic
if (z /= 4 .or. w /= 6) stop 4
!$omp atomic write
x = y
!$omp end atomic
if (x /= 3.0 .or. y /= 3.0) stop 5
x = 7.0
!$omp atomic write
y = x
!$omp end atomic
if (x /= 7.0 .or. y /= 7.0) stop 6
!$omp atomic write
z = w
!$omp end atomic
if (z /= 6 .or. w /= 6) stop 7
z = 8
!$omp atomic write
w = z
!$omp end atomic
if (z /= 8 .or. w /= 8) stop 8
end