! RUN: %flang_fc1 -fdebug-unparse-no-sema -fopenmp %s | FileCheck %s
program main
implicit none
integer :: i, j = 10
!READ
!$omp atomic read
i = j
!$omp atomic seq_cst read
i = j
!$omp atomic read seq_cst
i = j
!$omp atomic release read
i = j
!$omp atomic read release
i = j
!$omp atomic acq_rel read
i = j
!$omp atomic read acq_rel
i = j
!$omp atomic acquire read
i = j
!$omp atomic read acquire
i = j
!$omp atomic relaxed read
i = j
!$omp atomic read relaxed
i = j
! WRITE
!$omp atomic write
i = j
!$omp atomic seq_cst write
i = j
!$omp atomic write seq_cst
i = j
!$omp atomic release write
i = j
!$omp atomic write release
i = j
!$omp atomic acq_rel write
i = j
!$omp atomic write acq_rel
i = j
!$omp atomic acquire write
i = j
!$omp atomic write acquire
i = j
!$omp atomic relaxed write
i = j
!$omp atomic write relaxed
i = j
!UPDATE
!$omp atomic update
i = j
!$omp atomic seq_cst update
i = j
!$omp atomic update seq_cst
i = j
!$omp atomic release update
i = j
!$omp atomic update release
i = j
!$omp atomic acq_rel update
i = j
!$omp atomic update acq_rel
i = j
!$omp atomic acquire update
i = j
!$omp atomic update acquire
i = j
!$omp atomic relaxed update
i = j
!$omp atomic update relaxed
i = j
!CAPTURE
!$omp atomic capture
i = j
i = j
!$omp end atomic
!$omp atomic seq_cst capture
i = j
i = j
!$omp end atomic
!$omp atomic capture seq_cst
i = j
i = j
!$omp end atomic
!$omp atomic release capture
i = j
i = j
!$omp end atomic
!$omp atomic capture release
i = j
i = j
!$omp end atomic
!$omp atomic acq_rel capture
i = j
i = j
!$omp end atomic
!$omp atomic capture acq_rel
i = j
i = j
!$omp end atomic
!$omp atomic acquire capture
i = j
i = j
!$omp end atomic
!$omp atomic capture acquire
i = j
i = j
!$omp end atomic
!$omp atomic relaxed capture
i = j
i = j
!$omp end atomic
!$omp atomic capture relaxed
i = j
i = j
!$omp end atomic
!ATOMIC
!$omp atomic
i = j
!$omp atomic seq_cst
i = j
!$omp atomic release
i = j
!$omp atomic acq_rel
i = j
!$omp atomic acquire
i = j
!$omp atomic relaxed
i = j
end program main
!CHECK-LABEL: PROGRAM main
!READ
!CHECK: !$OMP ATOMIC READ
!CHECK: !$OMP ATOMIC SEQ_CST READ
!CHECK: !$OMP ATOMIC READ SEQ_CST
!CHECK: !$OMP ATOMIC RELEASE READ
!CHECK: !$OMP ATOMIC READ RELEASE
!CHECK: !$OMP ATOMIC ACQ_REL READ
!CHECK: !$OMP ATOMIC READ ACQ_REL
!CHECK: !$OMP ATOMIC ACQUIRE READ
!CHECK: !$OMP ATOMIC READ ACQUIRE
!CHECK: !$OMP ATOMIC RELAXED READ
!CHECK: !$OMP ATOMIC READ RELAXED
!WRITE
!CHECK: !$OMP ATOMIC WRITE
!CHECK: !$OMP ATOMIC SEQ_CST WRITE
!CHECK: !$OMP ATOMIC WRITE SEQ_CST
!CHECK: !$OMP ATOMIC RELEASE WRITE
!CHECK: !$OMP ATOMIC WRITE RELEASE
!CHECK: !$OMP ATOMIC ACQ_REL WRITE
!CHECK: !$OMP ATOMIC WRITE ACQ_REL
!CHECK: !$OMP ATOMIC ACQUIRE WRITE
!CHECK: !$OMP ATOMIC WRITE ACQUIRE
!CHECK: !$OMP ATOMIC RELAXED WRITE
!CHECK: !$OMP ATOMIC WRITE RELAXED
!UPDATE
!CHECK: !$OMP ATOMIC UPDATE
!CHECK: !$OMP ATOMIC SEQ_CST UPDATE
!CHECK: !$OMP ATOMIC UPDATE SEQ_CST
!CHECK: !$OMP ATOMIC RELEASE UPDATE
!CHECK: !$OMP ATOMIC UPDATE RELEASE
!CHECK: !$OMP ATOMIC ACQ_REL UPDATE
!CHECK: !$OMP ATOMIC UPDATE ACQ_REL
!CHECK: !$OMP ATOMIC ACQUIRE UPDATE
!CHECK: !$OMP ATOMIC UPDATE ACQUIRE
!CHECK: !$OMP ATOMIC RELAXED UPDATE
!CHECK: !$OMP ATOMIC UPDATE RELAXED
!CAPTURE
!CHECK: !$OMP ATOMIC CAPTURE
!CHECK: !$OMP END ATOMIC
!CHECK: !$OMP ATOMIC SEQ_CST CAPTURE
!CHECK: !$OMP END ATOMIC
!CHECK: !$OMP ATOMIC CAPTURE SEQ_CST
!CHECK: !$OMP END ATOMIC
!CHECK: !$OMP ATOMIC RELEASE CAPTURE
!CHECK: !$OMP END ATOMIC
!CHECK: !$OMP ATOMIC CAPTURE RELEASE
!CHECK: !$OMP END ATOMIC
!CHECK: !$OMP ATOMIC ACQ_REL CAPTURE
!CHECK: !$OMP END ATOMIC
!CHECK: !$OMP ATOMIC CAPTURE ACQ_REL
!CHECK: !$OMP END ATOMIC
!CHECK: !$OMP ATOMIC ACQUIRE CAPTURE
!CHECK: !$OMP END ATOMIC
!CHECK: !$OMP ATOMIC CAPTURE ACQUIRE
!CHECK: !$OMP END ATOMIC
!CHECK: !$OMP ATOMIC RELAXED CAPTURE
!CHECK: !$OMP END ATOMIC
!CHECK: !$OMP ATOMIC CAPTURE RELAXED
!CHECK: !$OMP END ATOMIC
!ATOMIC
!CHECK: !$OMP ATOMIC
!CHECK: !$OMP ATOMIC SEQ_CST
!CHECK: !$OMP ATOMIC RELEASE
!CHECK: !$OMP ATOMIC ACQ_REL
!CHECK: !$OMP ATOMIC ACQUIRE
!CHECK: !$OMP ATOMIC RELAXED