OpenMP 6.0 allows whole assumed-size arrays to appear as list items in MAP and USE_DEVICE_ADDR clauses. This was not allowed in prior spec versions.
44 lines
910 B
Fortran
44 lines
910 B
Fortran
! RUN: %python %S/../test_errors.py %s %flang -fopenmp -fopenmp-version=52
|
|
! Check OpenMP MAP clause validity. Section 5.8.3 OpenMP 5.2.
|
|
|
|
subroutine sb(arr)
|
|
implicit none
|
|
real(8) :: arr(*)
|
|
real :: a
|
|
integer:: b, c, i
|
|
common /var/ b, c
|
|
|
|
!ERROR: Whole assumed-size arrays are not allowed on MAP clause
|
|
!$omp target map(arr)
|
|
do i = 1, 100
|
|
a = 3.14
|
|
enddo
|
|
!$omp end target
|
|
|
|
!ERROR: Assumed-size array 'arr' must have explicit final subscript upper bound value
|
|
!$omp target map(arr(:))
|
|
do i = 1, 100
|
|
a = 3.14
|
|
enddo
|
|
!$omp end target
|
|
|
|
!$omp target map(arr(3:5))
|
|
do i = 1, 100
|
|
a = 3.14
|
|
enddo
|
|
!$omp end target
|
|
|
|
!$omp target map(tofrom: /var/)
|
|
b = 1
|
|
c = 2
|
|
!$omp end target
|
|
end subroutine
|
|
|
|
subroutine sb1
|
|
integer :: xx
|
|
integer :: a
|
|
!ERROR: Name 'xx' should be a mapper name
|
|
!$omp target map(mapper(xx), from:a)
|
|
!$omp end target
|
|
end subroutine sb1
|