[OG9][committed] was: [patch][Fortran] Actually permit OpenMP's 'target simd'

Tobias Burnus tobias@codesourcery.com
Tue Oct 8 12:47:00 GMT 2019


Trunk (r276698): I have tested it with nvptx, it worked; hence, I moved 
it to libgomp as run-time test.

OG9: I have also committed the patch to the OG9 / openacc-gcc-9 branch. 
(54fbada7d4d38e420efb5a10d39e03b02533b1e7)

Thanks,

Tobias

On 10/8/19 2:12 PM, Jakub Jelinek wrote:
> 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



More information about the Gcc-patches mailing list