1! { dg-additional-options "-fdump-tree-gimple" }
2! { dg-final { scan-tree-dump "foo \\(6\\);\[\n\r]*  __sync_synchronize \\(\\);\[\n\r]*  foo \\(6\\);" "gimple" } }
3! { dg-final { scan-tree-dump "foo \\(4\\);\[\n\r]*  __atomic_thread_fence \\(4\\);\[\n\r]*  foo \\(4\\);" "gimple" } }
4! { dg-final { scan-tree-dump "foo \\(3\\);\[\n\r]*  __atomic_thread_fence \\(3\\);\[\n\r]*  foo \\(3\\);" "gimple" } }
5! { dg-final { scan-tree-dump "foo \\(2\\);\[\n\r]*  __atomic_thread_fence \\(2\\);\[\n\r]*  foo \\(2\\);" "gimple" } }
6! { dg-final { scan-tree-dump "foo \\(5\\);\[\n\r]*  __sync_synchronize \\(\\);\[\n\r]*  foo \\(5\\);" "gimple" } }
7
8module m
9  interface
10    subroutine foo(x)
11      integer, value :: x
12    end
13  end interface
14end module m
15
16subroutine f1
17  use m
18  call foo (4)
19  !$omp flush acq_rel
20  call foo (4)
21end
22
23subroutine f2
24  use m
25  call foo (3)
26  !$omp flush release
27  call foo (3)
28end
29
30subroutine f3
31  use m
32  call foo (2)
33  !$omp flush acquire
34  call foo (2)
35end
36
37subroutine f4
38  use m
39  call foo (5)
40  !$omp flush
41  call foo (5)
42end
43
44subroutine f5
45  use m
46  call foo (6)
47  !$omp flush seq_cst
48  call foo (6)
49end
50