1! { dg-do compile } 2! { dg-additional-options "-fdump-tree-original" } 3! { dg-final { scan-tree-dump-times "omp atomic release" 1 "original" } } 4! { dg-final { scan-tree-dump-times "omp atomic seq_cst" 3 "original" } } 5! { dg-final { scan-tree-dump-times "omp atomic read seq_cst" 1 "original" } } 6! { dg-final { scan-tree-dump-times "omp atomic capture seq_cst" 1 "original" } } 7 8module mod 9implicit none 10integer i, j, k, l, m, n 11 12contains 13subroutine foo () 14 !$omp atomic release 15 i = i + 1 16end 17end module 18 19module m2 20use mod 21implicit none 22!$omp requires atomic_default_mem_order (seq_cst) 23 24contains 25 26subroutine bar () 27 integer v 28 !$omp atomic 29 j = j + 1 30 !$omp atomic update 31 k = k + 1 32 !$omp atomic read 33 v = l 34 !$omp atomic write 35 m = v 36 !$omp atomic capture 37 n = n + 1; v = n 38end 39end module 40