! { dg-additional-options "-fdump-tree-gimple" } ! { dg-final { scan-tree-dump "foo \\(6\\);\[\n\r]* __sync_synchronize \\(\\);\[\n\r]* foo \\(6\\);" "gimple" } } ! { dg-final { scan-tree-dump "foo \\(4\\);\[\n\r]* __atomic_thread_fence \\(4\\);\[\n\r]* foo \\(4\\);" "gimple" } } ! { dg-final { scan-tree-dump "foo \\(3\\);\[\n\r]* __atomic_thread_fence \\(3\\);\[\n\r]* foo \\(3\\);" "gimple" } } ! { dg-final { scan-tree-dump "foo \\(2\\);\[\n\r]* __atomic_thread_fence \\(2\\);\[\n\r]* foo \\(2\\);" "gimple" } } ! { dg-final { scan-tree-dump "foo \\(5\\);\[\n\r]* __sync_synchronize \\(\\);\[\n\r]* foo \\(5\\);" "gimple" } } module m interface subroutine foo(x) integer, value :: x end end interface end module m subroutine f1 use m call foo (4) !$omp flush acq_rel call foo (4) end subroutine f2 use m call foo (3) !$omp flush release call foo (3) end subroutine f3 use m call foo (2) !$omp flush acquire call foo (2) end subroutine f4 use m call foo (5) !$omp flush call foo (5) end subroutine f5 use m call foo (6) !$omp flush seq_cst call foo (6) end