blob: 904bb1d03aab49d10eccad75e1e2776e8e05e5da [file] [log] [blame]
! { 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