1! { dg-do run }
2    integer (kind = 4) :: a, a2
3    integer (kind = 2) :: b, b2
4    real :: c
5    double precision :: d, d2, c2
6    integer, dimension (10) :: e
7!$omp atomic write
8    a = 1
9!$omp atomic write
10    b = 2
11!$omp atomic write
12    c = 3
13!$omp atomic write
14    d = 4
15!$omp atomic capture
16    a2 = a
17    a = a + 4
18!$omp end atomic
19!$omp atomic capture
20    b = b - 18
21    b2 = b
22!$omp end atomic
23!$omp atomic capture
24    c2 = c
25    c = 2.0 * c
26!$omp end atomic
27!$omp atomic capture
28    d = d / 2.0
29    d2 = d
30!$omp end atomic
31    if (a2 .ne. 1 .or. b2 .ne. -16 .or. c2 .ne. 3 .or. d2 .ne. 2) call abort
32!$omp atomic read
33    a2 = a
34!$omp atomic read
35    c2 = c
36    if (a2 .ne. 5 .or. b2 .ne. -16 .or. c2 .ne. 6 .or. d2 .ne. 2) call abort
37end
38