1! { dg-do compile }
2! { dg-options "-fopenmp" }
3
4module m
5  implicit none
6  integer :: x = 6
7contains
8
9subroutine foo ()
10  integer v
11  !$omp atomic seq_cst read
12  v = x
13  !$omp atomic seq_cst, read
14  v = x
15  !$omp atomic seq_cst write
16  x = v
17  !$omp atomic seq_cst ,write
18  x = v
19  !$omp atomic seq_cst update
20  x = x + v;
21  !$omp atomic seq_cst , update
22  x = v + x;
23  !$omp atomic seq_cst capture
24  v = x; x = x + 2;
25  !$omp atomic seq_cst, capture
26  v = x; x = 2 + x;
27  !$omp atomic read , seq_cst
28  v = x
29  !$omp atomic write ,seq_cst
30  x = v
31  !$omp atomic update, seq_cst
32  x = x + v
33  !$omp atomic capture, seq_cst
34  x = x + 2; v = x
35end
36end module m
37