mirror of
https://github.com/llvm/llvm-project.git
synced 2025-04-26 01:16:06 +00:00

OpenMP 5.0 adds a new clause `in_reduction` on OpenMP directives. This patch adds parser support for the same. Reviewed By: kiranchandramohan Differential Revision: https://reviews.llvm.org/D124156
64 lines
1.7 KiB
Fortran
64 lines
1.7 KiB
Fortran
! 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'
|