Hi! The whole topic of GCC PR94358 "[OMP] Privatize internal array variables introduced by the Fortran FE" is yet to be resolved, but we may already now add Gergő's testcase:
On 2019-01-25T15:13:48+0100, Gergö Barany <gergo_bar...@mentor.com> wrote: > --- /dev/null > +++ b/libgomp/testsuite/libgomp.oacc-fortran/initialize_kernels_loops.f90 > @@ -0,0 +1,31 @@ > +[...] ... to document the status quo, and so that it may help highlight any behavioral changes later on. I've pushed "Add 'libgomp.oacc-fortran/pr94358-1.f90' [PR94358]" to master branch in commit d1ba078d9bcc3457d36ba12695cfef29eb3ca942, see attached. Grüße Thomas ----------------- Mentor Graphics (Deutschland) GmbH, Arnulfstraße 201, 80634 München / Germany Registergericht München HRB 106955, Geschäftsführer: Thomas Heurung, Alexander Walter
>From d1ba078d9bcc3457d36ba12695cfef29eb3ca942 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gerg=C3=B6=20Barany?= <ge...@codesourcery.com> Date: Mon, 21 Jan 2019 03:08:57 -0800 Subject: [PATCH] Add 'libgomp.oacc-fortran/pr94358-1.f90' [PR94358] Document status quo re PR94358 "[OMP] Privatize internal array variables introduced by the Fortran FE". libgomp/ PR fortran/94358 * testsuite/libgomp.oacc-fortran/pr94358-1.f90: New. Co-authored-by: Thomas Schwinge <tho...@codesourcery.com> --- .../libgomp.oacc-fortran/pr94358-1.f90 | 34 +++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 libgomp/testsuite/libgomp.oacc-fortran/pr94358-1.f90 diff --git a/libgomp/testsuite/libgomp.oacc-fortran/pr94358-1.f90 b/libgomp/testsuite/libgomp.oacc-fortran/pr94358-1.f90 new file mode 100644 index 00000000000..5013c5ba04b --- /dev/null +++ b/libgomp/testsuite/libgomp.oacc-fortran/pr94358-1.f90 @@ -0,0 +1,34 @@ +! { dg-do run } +! { dg-additional-options "-fopt-info-omp-all" } + +subroutine kernel(lo, hi, a, b, c) + implicit none + integer :: lo, hi, i + real, dimension(lo:hi) :: a, b, c + + !$acc kernels copyin(lo, hi) ! { dg-optimized "assigned OpenACC seq loop parallelism" } + !$acc loop independent + do i = lo, hi + b(i) = a(i) + end do + !$acc loop independent + do i = lo, hi + c(i) = b(i) + end do + !$acc end kernels +end subroutine kernel + +program main + integer :: n = 20 + real, dimension(1:20) :: a, b, c + + a(:) = 1 + b(:) = 2 + c(:) = 3 + + call kernel(1, n, a, b, c) + + do i = 1, n + if (c(i) .ne. 1) call abort + end do +end program main -- 2.17.1