aboutsummaryrefslogtreecommitdiff
path: root/libgomp
diff options
context:
space:
mode:
authorjakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4>2009-11-25 20:28:56 +0000
committerjakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4>2009-11-25 20:28:56 +0000
commitc92cf9e4f8e6b8b0c5de797e0425ae05962f8c72 (patch)
treee09f0b243a46a3ff9e7a5acdd73e3b23f01bee52 /libgomp
parentdd835b66db94bf756d480ef7de17d8723a57b583 (diff)
PR fortran/42162
* trans-openmp.c (gfc_trans_omp_do): When dovar isn't a VAR_DECL, don't use simple loop and handle clauses properly. * testsuite/libgomp.fortran/pr42162.f90: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@154654 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'libgomp')
-rw-r--r--libgomp/ChangeLog7
-rw-r--r--libgomp/testsuite/libgomp.fortran/pr42162.f9053
2 files changed, 59 insertions, 1 deletions
diff --git a/libgomp/ChangeLog b/libgomp/ChangeLog
index e36c7e2ca7f..070d82f2ac8 100644
--- a/libgomp/ChangeLog
+++ b/libgomp/ChangeLog
@@ -1,7 +1,12 @@
+2009-11-25 Jakub Jelinek <jakub@redhat.com>
+
+ PR fortran/42162
+ * testsuite/libgomp.fortran/pr42162.f90: New test.
+
2009-11-13 Jakub Jelinek <jakub@redhat.com>
PR middle-end/42029
- * libgomp.c/pr42029.c: New test.
+ * testsuite/libgomp.c/pr42029.c: New test.
2009-10-26 Jakub Jelinek <jakub@redhat.com>
diff --git a/libgomp/testsuite/libgomp.fortran/pr42162.f90 b/libgomp/testsuite/libgomp.fortran/pr42162.f90
new file mode 100644
index 00000000000..dbcc3b71d9b
--- /dev/null
+++ b/libgomp/testsuite/libgomp.fortran/pr42162.f90
@@ -0,0 +1,53 @@
+! PR fortran/42162
+! { dg-do run }
+
+subroutine sub1(k, a)
+ implicit none
+ integer :: k, a(3)
+ !$omp do
+ do k=1,3
+ a(k) = a(k) + 1
+ enddo
+ !$omp end do
+end subroutine sub1
+
+subroutine sub2(k, a)
+ implicit none
+ integer :: k, a(3)
+ !$omp do private (k)
+ do k=1,3
+ a(k) = a(k) + 1
+ enddo
+ !$omp end do
+end subroutine sub2
+
+subroutine sub3(k, a)
+ implicit none
+ integer :: k, a(3)
+ !$omp do lastprivate (k)
+ do k=1,3
+ a(k) = a(k) + 1
+ enddo
+ !$omp end do
+end subroutine sub3
+
+program pr42162
+ implicit none
+ integer :: k, a(3), b(3), c(3)
+ a = 1
+ b = 2
+ c = 3
+ k = 3
+ !$omp parallel num_threads(3)
+ call sub1 (k, a)
+ !$omp end parallel
+ k = 4
+ !$omp parallel num_threads(3)
+ call sub2 (k, b)
+ !$omp end parallel
+ k = 10
+ !$omp parallel num_threads(3)
+ call sub3 (k, c)
+ !$omp end parallel
+ if (k.ne.4.or.any(a.ne.2).or.any(b.ne.3).or.any(c.ne.4)) call abort
+end