! REQUIRES: plugins, examples, shell
!RUN: %flang_fc1 -load %llvmshlibdir/flangOmpReport.so -plugin flang-omp-report -fopenmp %s -o - | FileCheck %s
! Check OpenMP clause validity for the following directives:
! 2.10 Device constructs
program main
real(8) :: arrayA(256), arrayB(256)
integer :: N
arrayA = 1.414
arrayB = 3.14
N = 256
!$omp target map(arrayA)
do i = 1, N
a = 3.14
enddo
!$omp end target
!$omp target device(0)
do i = 1, N
a = 3.14
enddo
!$omp end target
!$omp target defaultmap(tofrom:scalar)
do i = 1, N
a = 3.14
enddo
!$omp end target
!$omp teams num_teams(3) thread_limit(10) default(shared) private(i) shared(a)
do i = 1, N
a = 3.14
enddo
!$omp end teams
!$omp target map(tofrom:a)
do i = 1, N
a = 3.14
enddo
!$omp end target
!$omp target data device(0) map(to:a)
do i = 1, N
a = 3.14
enddo
!$omp end target data
end program main
! CHECK: ---
! CHECK-NEXT: - file: '{{[^"]*}}omp-device-constructs.f90'
! CHECK-NEXT: line: 16
! CHECK-NEXT: construct: target
! CHECK-NEXT: clauses:
! CHECK-NEXT: - clause: map
! CHECK-NEXT: details: arraya
! CHECK-NEXT: - file: '{{[^"]*}}omp-device-constructs.f90'
! CHECK-NEXT: line: 22
! CHECK-NEXT: construct: target
! CHECK-NEXT: clauses:
! CHECK-NEXT: - clause: device
! CHECK-NEXT: details: '0'
! CHECK-NEXT: - file: '{{[^"]*}}omp-device-constructs.f90'
! CHECK-NEXT: line: 28
! CHECK-NEXT: construct: target
! CHECK-NEXT: clauses:
! CHECK-NEXT: - clause: defaultmap
! CHECK-NEXT: details: 'tofrom:scalar'
! CHECK-NEXT: - file: '{{[^"]*}}omp-device-constructs.f90'
! CHECK-NEXT: line: 34
! CHECK-NEXT: construct: teams
! CHECK-NEXT: clauses:
! CHECK-NEXT: - clause: default
! CHECK-NEXT: details: shared
! CHECK-NEXT: - clause: num_teams
! CHECK-NEXT: details: '3'
! CHECK-NEXT: - clause: private
! CHECK-NEXT: details: i
! CHECK-NEXT: - clause: shared
! CHECK-NEXT: details: a
! CHECK-NEXT: - clause: thread_limit
! CHECK-NEXT: details: '10'
! CHECK-NEXT: - file: '{{[^"]*}}omp-device-constructs.f90'
! CHECK-NEXT: line: 40
! CHECK-NEXT: construct: target
! CHECK-NEXT: clauses:
! CHECK-NEXT: - clause: map
! CHECK-NEXT: details: 'tofrom:a'
! CHECK-NEXT: - file: '{{[^"]*}}omp-device-constructs.f90'
! CHECK-NEXT: line: 46
! CHECK-NEXT: construct: target data
! CHECK-NEXT: clauses:
! CHECK-NEXT: - clause: device
! CHECK-NEXT: details: '0'
! CHECK-NEXT: - clause: map
! CHECK-NEXT: details: 'to:a'
! CHECK-NEXT: ...