aboutsummaryrefslogtreecommitdiff
path: root/libgomp
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@redhat.com>2006-05-03 12:51:33 +0000
committerJakub Jelinek <jakub@redhat.com>2006-05-03 12:51:33 +0000
commit961aa62f604cfa2b7405e873c092882800ff823b (patch)
tree5d4261cec1895613e4c02fd637f62bdfa2874e9b /libgomp
parenta80061b59b8cfffebf4b7d58ba4262726417c700 (diff)
PR fortran/27395
* gimplify.c (gimplify_scan_omp_clauses): Compare OMP_CLAUSE_CODE rather than TREE_CODE to OMP_CLAUSE_REDUCTION. Set also GOVD_SEEN bit for OMP_CLAUSE_REDUCTION_PLACEHOLDER. * testsuite/libgomp.fortran/pr27395-1.f90: New test. * testsuite/libgomp.fortran/pr27395-2.f90: New test. git-svn-id: https://gcc.gnu.org/svn/gcc/trunk@113494 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'libgomp')
-rw-r--r--libgomp/ChangeLog6
-rw-r--r--libgomp/testsuite/libgomp.fortran/pr27395-1.f9031
-rw-r--r--libgomp/testsuite/libgomp.fortran/pr27395-2.f9030
3 files changed, 67 insertions, 0 deletions
diff --git a/libgomp/ChangeLog b/libgomp/ChangeLog
index 76d5631106f..d04194cd4a6 100644
--- a/libgomp/ChangeLog
+++ b/libgomp/ChangeLog
@@ -1,3 +1,9 @@
+2006-05-03 Jakub Jelinek <jakub@redhat.com>
+
+ PR fortran/27395
+ * testsuite/libgomp.fortran/pr27395-1.f90: New test.
+ * testsuite/libgomp.fortran/pr27395-2.f90: New test.
+
2006-05-02 Jakub Jelinek <jakub@redhat.com>
PR c++/26943
diff --git a/libgomp/testsuite/libgomp.fortran/pr27395-1.f90 b/libgomp/testsuite/libgomp.fortran/pr27395-1.f90
new file mode 100644
index 00000000000..380a107760b
--- /dev/null
+++ b/libgomp/testsuite/libgomp.fortran/pr27395-1.f90
@@ -0,0 +1,31 @@
+! PR fortran/27395
+! { dg-do run }
+
+program pr27395_1
+ implicit none
+ integer, parameter :: n=10,m=1001
+ integer :: i
+ integer, dimension(n) :: sumarray
+ call foo(n,m,sumarray)
+ do i=1,n
+ if (sumarray(i).ne.m*i) call abort
+ end do
+end program pr27395_1
+
+subroutine foo(n,m,sumarray)
+ use omp_lib, only : omp_get_thread_num
+ implicit none
+ integer, intent(in) :: n,m
+ integer, dimension(n), intent(out) :: sumarray
+ integer :: i,j
+ sumarray(:)=0
+!$OMP PARALLEL DEFAULT(shared) NUM_THREADS(4)
+!$OMP DO PRIVATE(j,i), REDUCTION(+:sumarray)
+ do j=1,m
+ do i=1,n
+ sumarray(i)=sumarray(i)+i
+ end do
+ end do
+!$OMP END DO
+!$OMP END PARALLEL
+end subroutine foo
diff --git a/libgomp/testsuite/libgomp.fortran/pr27395-2.f90 b/libgomp/testsuite/libgomp.fortran/pr27395-2.f90
new file mode 100644
index 00000000000..b3cb255f6dd
--- /dev/null
+++ b/libgomp/testsuite/libgomp.fortran/pr27395-2.f90
@@ -0,0 +1,30 @@
+! PR fortran/27395
+! { dg-do run }
+
+program pr27395_2
+ implicit none
+ integer, parameter :: n=10,m=1001
+ integer :: i
+ call foo(n,m)
+end program pr27395_2
+
+subroutine foo(n,m)
+ use omp_lib, only : omp_get_thread_num
+ implicit none
+ integer, intent(in) :: n,m
+ integer :: i,j
+ integer, dimension(n) :: sumarray
+ sumarray(:)=0
+!$OMP PARALLEL DEFAULT(shared) NUM_THREADS(4)
+!$OMP DO PRIVATE(j,i), REDUCTION(+:sumarray)
+ do j=1,m
+ do i=1,n
+ sumarray(i)=sumarray(i)+i
+ end do
+ end do
+!$OMP END DO
+!$OMP END PARALLEL
+ do i=1,n
+ if (sumarray(i).ne.m*i) call abort
+ end do
+end subroutine foo