diff options
Diffstat (limited to 'gcc-4.9/libgomp/testsuite/libgomp.fortran/cancel-parallel-3.f90')
-rw-r--r-- | gcc-4.9/libgomp/testsuite/libgomp.fortran/cancel-parallel-3.f90 | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/gcc-4.9/libgomp/testsuite/libgomp.fortran/cancel-parallel-3.f90 b/gcc-4.9/libgomp/testsuite/libgomp.fortran/cancel-parallel-3.f90 new file mode 100644 index 000000000..9d5ba8ffa --- /dev/null +++ b/gcc-4.9/libgomp/testsuite/libgomp.fortran/cancel-parallel-3.f90 @@ -0,0 +1,38 @@ +! { dg-do run } +! { dg-options "-fno-inline -fno-ipa-sra -fno-ipa-cp -fno-ipa-cp-clone" } +! { dg-set-target-env-var OMP_CANCELLATION "true" } + + use omp_lib + integer :: x, i, j + common /x/ x + + call omp_set_dynamic (.false.) + call omp_set_schedule (omp_sched_static, 1) + !$omp parallel num_threads(16) private (i, j) + call do_some_work + !$omp barrier + if (omp_get_thread_num ().eq.1) then + call sleep (2) + !$omp cancellation point parallel + end if + do j = 3, 16 + !$omp do schedule(runtime) + do i = 0, j - 1 + call do_some_work + end do + !$omp enddo nowait + end do + if (omp_get_thread_num ().eq.0) then + call sleep (1) + !$omp cancel parallel + end if + !$omp end parallel +contains + subroutine do_some_work + integer :: x + common /x/ x + !$omp atomic + x = x + 1 + !$omp end atomic + endsubroutine do_some_work +end |