diff options
author | Tom de Vries <tom@codesourcery.com> | 2015-07-10 08:25:18 +0000 |
---|---|---|
committer | Tom de Vries <vries@gcc.gnu.org> | 2015-07-10 08:25:18 +0000 |
commit | 9f620bf1eaa3b4a0c0419d0245184b50d871dd3b (patch) | |
tree | 44f02740ee8ce53dcbdabefda2290ac7c2c32586 /libgomp/testsuite | |
parent | 094fe02336be4ba0bf630ab056d34c0333ff0852 (diff) | |
download | gcc-9f620bf1eaa3b4a0c0419d0245184b50d871dd3b.zip gcc-9f620bf1eaa3b4a0c0419d0245184b50d871dd3b.tar.gz gcc-9f620bf1eaa3b4a0c0419d0245184b50d871dd3b.tar.bz2 |
Insert new bound in try_transform_to_exit_first_loop_alt
2015-07-10 Tom de Vries <tom@codesourcery.com>
* tree-parloops.c (try_transform_to_exit_first_loop_alt): If not found,
insert nit + 1 bound.
* testsuite/libgomp.fortran/parloops-exit-first-loop-alt-2.f95: New test.
* testsuite/libgomp.fortran/parloops-exit-first-loop-alt.f95: New test.
* gfortran.dg/parloops-exit-first-loop-alt-2.f95: New test.
* gfortran.dg/parloops-exit-first-loop-alt.f95: New test.
From-SVN: r225655
Diffstat (limited to 'libgomp/testsuite')
-rw-r--r-- | libgomp/testsuite/libgomp.fortran/parloops-exit-first-loop-alt-2.f95 | 40 | ||||
-rw-r--r-- | libgomp/testsuite/libgomp.fortran/parloops-exit-first-loop-alt.f95 | 41 |
2 files changed, 81 insertions, 0 deletions
diff --git a/libgomp/testsuite/libgomp.fortran/parloops-exit-first-loop-alt-2.f95 b/libgomp/testsuite/libgomp.fortran/parloops-exit-first-loop-alt-2.f95 new file mode 100644 index 0000000..56add65 --- /dev/null +++ b/libgomp/testsuite/libgomp.fortran/parloops-exit-first-loop-alt-2.f95 @@ -0,0 +1,40 @@ +! { dg-do run } +! { dg-additional-options "-O2" } +! { dg-additional-options "-ftree-parallelize-loops=2" } + +! Constant bound, vector addition. + +subroutine foo () + integer, parameter :: n = 1000 + integer, dimension (0:n-1) :: a, b, c + common a, b, c + integer :: ii + + do ii = 0, n - 1 + c(ii) = a(ii) + b(ii) + end do +end subroutine foo + +program main + integer, parameter :: n = 1000 + integer, parameter :: distrib = 10 + integer, dimension (0:n-1) :: a, b, c + common a, b, c + integer :: i, j, k + + do j = 0, ((n / distrib) -1) + do i = 0, distrib - 1 + k = i + (distrib * j) + a(k) = k + b(k) = MODULO ((k * 3), 7) + c(k) = k * 2; + end do + end do + + call foo () + + do i = 0, n - 1 + if (c(i) .ne. (i + MODULO ((i * 3), 7))) call abort + end do + +end program diff --git a/libgomp/testsuite/libgomp.fortran/parloops-exit-first-loop-alt.f95 b/libgomp/testsuite/libgomp.fortran/parloops-exit-first-loop-alt.f95 new file mode 100644 index 0000000..72b3c8d --- /dev/null +++ b/libgomp/testsuite/libgomp.fortran/parloops-exit-first-loop-alt.f95 @@ -0,0 +1,41 @@ +! { dg-do run } +! { dg-additional-options "-O2" } +! { dg-additional-options "-ftree-parallelize-loops=2" } + +! Variable bound, vector addition. + +subroutine foo (nr) + integer, intent(in) :: nr + integer, parameter :: n = 1000 + integer, dimension (0:n-1) :: a, b, c + common a, b, c + integer :: ii + + do ii = 0, nr - 1 + c(ii) = a(ii) + b(ii) + end do +end subroutine foo + +program main + integer, parameter :: n = 1000 + integer, parameter :: distrib = 10 + integer, dimension (0:n-1) :: a, b, c + common a, b, c + integer :: i, j, k + + do j = 0, ((n / distrib) -1) + do i = 0, distrib - 1 + k = i + (distrib * j) + a(k) = k + b(k) = MODULO ((k * 3), 7) + c(k) = k * 2; + end do + end do + + call foo (n) + + do i = 0, n - 1 + if (c(i) .ne. (i + MODULO ((i * 3), 7))) call abort + end do + +end program |