! { dg-do compile } ! { dg-additional-options "-fdump-tree-original" } ! { dg-final { scan-tree-dump-times "omp atomic release" 1 "original" } } ! { dg-final { scan-tree-dump-times "omp atomic seq_cst" 3 "original" } } ! { dg-final { scan-tree-dump-times "omp atomic read seq_cst" 1 "original" } } ! { dg-final { scan-tree-dump-times "omp atomic capture seq_cst" 1 "original" } } module mod implicit none integer i, j, k, l, m, n contains subroutine foo () !$omp atomic release i = i + 1 end end module module m2 use mod implicit none !$omp requires atomic_default_mem_order (seq_cst) contains subroutine bar () integer v !$omp atomic j = j + 1 !$omp atomic update k = k + 1 !$omp atomic read v = l !$omp atomic write m = v !$omp atomic capture n = n + 1; v = n end end module