On Tue, Oct 08, 2019 at 02:04:17PM +0200, Tobias Burnus wrote: > Seemingly, 'target simd' was forgotten – which yielded the error: > "Unexpected !$OMP TARGET SIMD statement" > > OK for the trunk? > > Tobias > > PS: The test case should also work as 'dg-do run' test, if it makes more > sense. (Only tested on a system w/o offloading, but I would test it with > nvptx before committing it.)
gfortran.dg/gomp/ shouldn't contain dg-do link or dg-do run tests, those should be in libgomp/testsuite/libgomp.fortran/ but then there is no point duplicating the test in gfortran.dg/gomp/. > > fortran/ > * parse.c (parse_executable): Add missing ST_OMP_TARGET_SIMD. > > testsuite/ > * gfortran.dg/gomp/target-simd.f90: New. Ok, with moving the test to libgomp.fortran/ and removing the dg-do compile line, or without. > --- /dev/null > +++ b/gcc/testsuite/gfortran.dg/gomp/target-simd.f90 > @@ -0,0 +1,26 @@ > +! { dg-do compile } > + > +program test > + implicit none > + real, allocatable :: a(:), b(:) > + integer :: i > + > + a = [(i, i = 1, 100)] > + allocate(b, mold=a) > + b = 0 > + > + !$omp target simd map(to:a) map(from:b) > + do i = 0, size(a) > + b(i) = 5.0 * a(i) > + end do > + > + if (any (b - 5.0 *a > 10.0*epsilon(a))) call abort() > + > + !$omp target simd map(to:a) map(from:b) > + do i = 0, size(a) > + b(i) = 2.0 * a(i) > + end do > + !$omp end target simd > + > + if (any (b - 2.0 *a > 10.0*epsilon(a))) call abort() > +end program test Jakub