! { dg-additional-options "-fdump-tree-original" } function foo (x, y) result (z) !$omp requires atomic_default_mem_order(release) implicit none real :: x, y, z !$omp atomic write x = y !$omp atomic update x = x + 1 !$omp atomic read acquire z = x end function bar (a, b) result (c) !$omp requires atomic_default_mem_order(acquire) implicit none real :: a, b, c !$omp atomic write release a = b !$omp atomic update a = a + 1 !$omp atomic read c = a end ! { dg-final { scan-tree-dump-times "#pragma omp atomic release" 3 "original" } } */ ! { dg-final { scan-tree-dump-times "#pragma omp atomic acquire" 1 "original" } } */ ! { dg-final { scan-tree-dump-times "z = #pragma omp atomic read acquire" 1 "original" } } */ ! { dg-final { scan-tree-dump-times "c = #pragma omp atomic read acquire" 1 "original" } } */