1! { dg-do compile } 2! { dg-additional-options "-fdump-tree-original" } 3 4! { dg-final { scan-tree-dump-times "#pragma omp atomic relaxed" 4 "original" } } 5! { dg-final { scan-tree-dump-times "#pragma omp atomic release" 4 "original" } } 6! { dg-final { scan-tree-dump-times "v = #pragma omp atomic capture relaxed" 2 "original" } } 7! { dg-final { scan-tree-dump-times "v = #pragma omp atomic capture release" 1 "original" } } 8! { dg-final { scan-tree-dump-times "v = #pragma omp atomic read acquire" 1 "original" } } 9 10! { dg-final { scan-tree-dump-times "#pragma omp atomic seq_cst" 7 "original" } } 11! { dg-final { scan-tree-dump-times "v = #pragma omp atomic read seq_cst" 3 "original" } } 12! { dg-final { scan-tree-dump-times "v = #pragma omp atomic capture seq_cst" 3 "original" } } 13 14 15subroutine foo () 16 integer :: x, v 17 !$omp atomic 18 i = i + 2 19 20 !$omp atomic relaxed 21 i = i + 2 22 23 !$omp atomic seq_cst read 24 v = x 25 !$omp atomic seq_cst, read 26 v = x 27 !$omp atomic seq_cst write 28 x = v 29 !$omp atomic seq_cst ,write 30 x = v 31 !$omp atomic seq_cst update 32 x = x + v 33 !$omp atomic seq_cst , update 34 x = x + v 35 !$omp atomic seq_cst capture 36 x = x + 2 37 v = x 38 !$omp end atomic 39 !$omp atomic seq_cst, capture 40 x = x + 2 41 v = x 42 !$omp end atomic 43 !$omp atomic read , seq_cst 44 v = x 45 !$omp atomic write ,seq_cst 46 x = v 47 !$omp atomic update, seq_cst 48 x = x + v 49 !$omp atomic capture, seq_cst 50 x = x + 2 51 v = x 52 !$omp end atomic 53end 54 55subroutine bar 56 integer :: i, v 57 real :: f 58 !$omp atomic release, hint (0), update 59 i = i + 1 60 !$omp end atomic 61 !$omp atomic hint(0)seq_cst 62 i = i + 1 63 !$omp atomic relaxed,update,hint (0) 64 i = i + 1 65 !$omp atomic release 66 i = i + 1 67 !$omp atomic relaxed 68 i = i + 1 69 !$omp atomic relaxed capture 70 i = i + 1 71 v = i 72 !$omp end atomic 73 !$omp atomic capture,release , hint (1) 74 i = i + 1 75 v = i 76 !$omp end atomic 77 !$omp atomic hint(0),relaxed capture 78 i = i + 1 79 v = i 80 !$omp end atomic 81 !$omp atomic read acquire 82 v = i 83 !$omp atomic release,write 84 i = v 85 !$omp atomic hint(1),update,release 86 f = f + 2.0 87end 88