aboutsummaryrefslogtreecommitdiff
path: root/libgomp/testsuite/libgomp.fortran
diff options
context:
space:
mode:
authorTom de Vries <tom@codesourcery.com>2015-07-10 08:25:18 +0000
committerTom de Vries <vries@gcc.gnu.org>2015-07-10 08:25:18 +0000
commit9f620bf1eaa3b4a0c0419d0245184b50d871dd3b (patch)
tree44f02740ee8ce53dcbdabefda2290ac7c2c32586 /libgomp/testsuite/libgomp.fortran
parent094fe02336be4ba0bf630ab056d34c0333ff0852 (diff)
downloadgcc-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/libgomp.fortran')
-rw-r--r--libgomp/testsuite/libgomp.fortran/parloops-exit-first-loop-alt-2.f9540
-rw-r--r--libgomp/testsuite/libgomp.fortran/parloops-exit-first-loop-alt.f9541
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