diff options
Diffstat (limited to 'gcc-4.9/libgomp/testsuite/libgomp.fortran/target7.f90')
-rw-r--r-- | gcc-4.9/libgomp/testsuite/libgomp.fortran/target7.f90 | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/gcc-4.9/libgomp/testsuite/libgomp.fortran/target7.f90 b/gcc-4.9/libgomp/testsuite/libgomp.fortran/target7.f90 new file mode 100644 index 000000000..0c977c44a --- /dev/null +++ b/gcc-4.9/libgomp/testsuite/libgomp.fortran/target7.f90 @@ -0,0 +1,38 @@ +! { dg-do run } + + interface + real function foo (x) + !$omp declare target + real, intent(in) :: x + end function foo + end interface + integer, parameter :: n = 1000 + integer, parameter :: c = 100 + integer :: i, j + real :: a(n) + do i = 1, n + a(i) = i + end do + !$omp parallel + !$omp single + do i = 1, n, c + !$omp task shared(a) + !$omp target map(a(i:i+c-1)) + !$omp parallel do + do j = i, i + c - 1 + a(j) = foo (a(j)) + end do + !$omp end target + !$omp end task + end do + !$omp end single + !$omp end parallel + do i = 1, n + if (a(i) /= i + 1) call abort + end do +end +real function foo (x) + !$omp declare target + real, intent(in) :: x + foo = x + 1 +end function foo |