! REQUIRES: plugins, examples, shell
! RUN: %flang_fc1 -load %llvmshlibdir/flangOmpReport.so -plugin flang-omp-report -fopenmp %s -o - | FileCheck %s
! Check for IN_REDUCTION() clause on OpenMP constructs
subroutine omp_in_reduction_taskgroup()
integer :: z, i
!$omp taskgroup task_reduction(+:z)
!$omp task in_reduction(+:z)
z = z + 5
!$omp end task
!$omp taskloop in_reduction(+:z)
do i=1,10
z = z * 5
end do
!$omp end taskloop
!$omp end taskgroup
end subroutine omp_in_reduction_taskgroup
!CHECK: - file: {{.*}}
!CHECK: line: 10
!CHECK: construct: task
!CHECK: clauses:
!CHECK: - clause: in_reduction
!CHECK: details: '+:z'
!CHECK: - file: {{.*}}
!CHECK: line: 14
!CHECK: construct: taskloop
!CHECK: clauses:
!CHECK: - clause: in_reduction
!CHECK: details: '+:z'
!CHECK: - file: {{.*}}
!CHECK: line: 9
!CHECK: construct: taskgroup
!CHECK: clauses:
!CHECK: - clause: task_reduction
!CHECK: details: '+:z'
subroutine omp_in_reduction_parallel()
integer :: z
!$omp parallel reduction(+:z)
!$omp taskloop simd in_reduction(+:z)
do i=1,10
z = z * 5
end do
!$omp end taskloop simd
!$omp end parallel
end subroutine omp_in_reduction_parallel
!CHECK: - file: {{.*}}
!CHECK: line: 44
!CHECK: construct: taskloop simd
!CHECK: clauses:
!CHECK: - clause: in_reduction
!CHECK: details: '+:z'
!CHECK: - file: {{.*}}
!CHECK: line: 43
!CHECK: construct: parallel
!CHECK: clauses:
!CHECK: - clause: reduction
!CHECK: details: '+:z'