
This patch moves several tests introduced by the following patch: https://gcc.gnu.org/pipermail/gcc-patches/2023-April/616939.html commit r14-325-gcacf65d74463600815773255e8b82b4043432bd7 into the proper location for OpenACC testing (thanks to Thomas for spotting my mistake!), and also fixes a few additional problems -- missing diagnostics for non-pointer attaches, and a case where a pointer was incorrectly dereferenced. Tests are also adjusted for vector-length warnings on nvidia accelerators. 2023-04-29 Julian Brown <julian@codesourcery.com> PR fortran/109622 gcc/fortran/ * openmp.cc (resolve_omp_clauses): Add diagnostic for non-pointer/non-allocatable attach/detach. * trans-openmp.cc (gfc_trans_omp_clauses): Remove dereference for pointer-to-scalar derived type component attach/detach. Fix attach/detach handling for descriptors. gcc/testsuite/ * gfortran.dg/goacc/pr109622-5.f90: New test. * gfortran.dg/goacc/pr109622-6.f90: New test. libgomp/ * testsuite/libgomp.fortran/pr109622.f90: Move test... * testsuite/libgomp.oacc-fortran/pr109622.f90: ...to here. Ignore vector length warning. * testsuite/libgomp.fortran/pr109622-2.f90: Move test... * testsuite/libgomp.oacc-fortran/pr109622-2.f90: ...to here. Add missing copyin/copyout variable. Ignore vector length warnings. * testsuite/libgomp.fortran/pr109622-3.f90: Move test... * testsuite/libgomp.oacc-fortran/pr109622-3.f90: ...to here. Ignore vector length warnings. * testsuite/libgomp.oacc-fortran/pr109622-4.f90: New test.
35 lines
522 B
Fortran
35 lines
522 B
Fortran
! { dg-do run }
|
|
|
|
implicit none
|
|
|
|
type t
|
|
integer :: foo
|
|
integer, pointer :: bar
|
|
end type t
|
|
|
|
type(t) :: var
|
|
integer, target :: tgt
|
|
|
|
var%bar => tgt
|
|
|
|
var%foo = 99
|
|
tgt = 199
|
|
|
|
!$acc enter data copyin(var, tgt)
|
|
|
|
!$acc enter data attach(var%bar)
|
|
|
|
!$acc serial
|
|
! { dg-warning "using .vector_length \\(32\\)., ignoring 1" "" { target openacc_nvidia_accel_selected } .-1 }
|
|
var%foo = 5
|
|
var%bar = 7
|
|
!$acc end serial
|
|
|
|
!$acc exit data detach(var%bar)
|
|
|
|
!$acc exit data copyout(var, tgt)
|
|
|
|
if (var%foo.ne.5) stop 1
|
|
if (tgt.ne.7) stop 2
|
|
|
|
end
|