diff options
author | Tobias Burnus <tobias@codesourcery.com> | 2020-09-16 16:23:13 +0200 |
---|---|---|
committer | Tobias Burnus <tobias@codesourcery.com> | 2020-09-16 16:23:13 +0200 |
commit | 91347c3bbf788ede4af89f46206991c47fa8aceb (patch) | |
tree | db8eee921a878bd0b338c07697193f38eae5aec5 /gcc/testsuite/gfortran.dg | |
parent | 2b7147e48564679d53b3c6629714991c5506d614 (diff) | |
download | gcc-91347c3bbf788ede4af89f46206991c47fa8aceb.zip gcc-91347c3bbf788ede4af89f46206991c47fa8aceb.tar.gz gcc-91347c3bbf788ede4af89f46206991c47fa8aceb.tar.bz2 |
Fortran: OpenMP - fix simd with (last)private (PR97061)
gcc/fortran/ChangeLog:
PR fortran/97061
* trans-openmp.c (gfc_trans_omp_do): Handle simd with (last)private.
gcc/testsuite/ChangeLog:
PR fortran/97061
* gfortran.dg/gomp/openmp-simd-6.f90: New test.
Diffstat (limited to 'gcc/testsuite/gfortran.dg')
-rw-r--r-- | gcc/testsuite/gfortran.dg/gomp/openmp-simd-6.f90 | 62 |
1 files changed, 62 insertions, 0 deletions
diff --git a/gcc/testsuite/gfortran.dg/gomp/openmp-simd-6.f90 b/gcc/testsuite/gfortran.dg/gomp/openmp-simd-6.f90 new file mode 100644 index 0000000..361e0da --- /dev/null +++ b/gcc/testsuite/gfortran.dg/gomp/openmp-simd-6.f90 @@ -0,0 +1,62 @@ +! { dg-additional-options "-fdump-tree-original" } +! +! PR fortran/97061 + +integer function f3 (a1, b1, u) + implicit none + integer :: a1, b1, d1 + integer u(0:1023) + !$omp teams distribute parallel do simd default(none) firstprivate (a1, b1) shared(u) lastprivate(d1) + do d1 = a1, b1-1 + u(d1) = 5 + end do +end + +subroutine foo(n, m, u) + implicit none + integer :: hh, ii, jj, n, m + integer u(0:1023) + !$omp simd private(ii) + do ii = n, m + u(ii) = 5 + end do + !$omp simd linear(jj:1) + do jj = 2, m+n + u(jj) = 6 + end do + !$omp simd + do hh = 2, m+n + u(hh) = 6 + end do +end + +subroutine bar(n, m, u) + implicit none + integer :: kkk, lll, ooo, ppp, n, m + integer u(:,:) + !$omp simd lastprivate(kkk) lastprivate(lll) collapse(2) + do kkk = n, m + do lll = n, m + u(kkk, lll) = 5 + end do + end do + !$omp simd private(kkk) private(lll) collapse(2) + do ooo = n, m + do ppp = n, m + u(ooo, ppp) = 5 + end do + end do +end + + +! { dg-final { scan-tree-dump-times "#pragma omp teams firstprivate\\(a1\\) firstprivate\\(b1\\) shared\\(u\\) default\\(none\\)" 1 "original" } } +! { dg-final { scan-tree-dump-times "#pragma omp distribute lastprivate\\(d1\\)" 1 "original" } } +! { dg-final { scan-tree-dump-times "#pragma omp parallel firstprivate\\(a1\\) firstprivate\\(b1\\) lastprivate\\(d1\\) shared\\(u\\) default\\(none\\)" 1 "original" } } +! { dg-final { scan-tree-dump-times "#pragma omp for nowait" 1 "original" } } +! { dg-final { scan-tree-dump-times "#pragma omp simd lastprivate\\(d1\\)" 1 "original" } } + +! { dg-final { scan-tree-dump-times "#pragma omp simd private\\(ii\\)" 1 "original" } } +! { dg-final { scan-tree-dump-times "#pragma omp simd linear\\(jj:1\\)" 1 "original" } } +! { dg-final { scan-tree-dump-times "#pragma omp simd linear\\(hh:1\\)" 1 "original" } } +! { dg-final { scan-tree-dump-times "#pragma omp simd lastprivate\\(kkk\\) lastprivate\\(lll\\) collapse\\(2\\)" 1 "original" } } +! { dg-final { scan-tree-dump-times "#pragma omp simd private\\(kkk\\) private\\(lll\\) collapse\\(2\\)" 1 "original" } } |