https://gcc.gnu.org/bugzilla/show_bug.cgi?id=105318

            Bug ID: 105318
           Summary: [OpenMP] is_device_ptr rejects valid arguments to
                    has_device_addr
           Product: gcc
           Version: 12.0
            Status: UNCONFIRMED
          Keywords: openmp, rejects-valid
          Severity: normal
          Priority: P3
         Component: fortran
          Assignee: unassigned at gcc dot gnu.org
          Reporter: burnus at gcc dot gnu.org
                CC: marcel at codesourcery dot com
  Target Milestone: ---

OpenMP 5.2 has the following (likewise wording in 5.1):

  "If the is_device_ptr clause is specified on a target construct, if any list
item
   is not of type C_PTR, the behavior is as if the list item appeared in a
   has_device_addr clause. Support for such list items in an is_device_ptr
clause is
   deprecated."


However, input is rejected due to the OpenMP 5.0 checks:

   12 |         !$omp target is_device_ptr(bbbb, aaaa)
      |                                   1
Error: Non-dummy object ‘bbbb’ in IS_DEVICE_PTR clause at (1)

   12 |         !$omp target is_device_ptr(bbbb, aaaa)
      |                                   1
Error: ALLOCATABLE object ‘bbbb’ in IS_DEVICE_PTR clause at (1)


For:

program main
  implicit none
  integer, allocatable :: aaa(:,:,:)
  allocate (aaa(-4:10,-3:8,2))
  call test_ptr (aaa)
  deallocate (aaa)
contains
  subroutine test_ptr (aaaa)
    integer, allocatable :: aaaa(:,:,:), bbbb(:,:,:)
    !$omp target data map(bbbb, aaaa)
      !$omp target data use_device_ptr(bbbb, aaaa)
        !$omp target is_device_ptr(bbbb, aaaa)
          ! ...
        !$omp end target
      !$omp end target data
    !$omp end target data
    deallocate (bbbb)
  end subroutine test_ptr
end program main

Reply via email to