diff options
author | jakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4> | 2009-11-25 20:28:56 +0000 |
---|---|---|
committer | jakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4> | 2009-11-25 20:28:56 +0000 |
commit | c92cf9e4f8e6b8b0c5de797e0425ae05962f8c72 (patch) | |
tree | e09f0b243a46a3ff9e7a5acdd73e3b23f01bee52 /libgomp | |
parent | dd835b66db94bf756d480ef7de17d8723a57b583 (diff) | |
download | gcc-c92cf9e4f8e6b8b0c5de797e0425ae05962f8c72.tar.gz |
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/ChangeLog | 7 | ||||
-rw-r--r-- | libgomp/testsuite/libgomp.fortran/pr42162.f90 | 53 |
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 |