llvm-project/flang/test/Semantics/OpenMP/omp-reduction02.f90
Kiran Chandramohan 495b8e104d [Flang][OpenMP] Provide an error when the minus operator is used in a reduction
OpenMP 5.2 standard has deprecated the usage of the minus operation in
reductions. The minus operation also is an unpleasant feature with
varied interpretations.

The patch also changes the usage of the minus operator in some existing testcases.

Discussed in https://discourse.llvm.org/t/openmp-runtime-problem-with-subtraction-reduction/64404

Reviewed By: peixin

Differential Revision: https://reviews.llvm.org/D132060
2022-08-18 14:35:12 +00:00

44 lines
1.1 KiB
Fortran

! RUN: %python %S/../test_errors.py %s %flang_fc1 -fopenmp
! OpenMP Version 4.5
! 2.15.3.6 Reduction Clause
program omp_reduction
integer :: i
integer :: k = 10
integer :: j = 10
!ERROR: 'k' appears in more than one data-sharing clause on the same OpenMP directive
!$omp parallel do reduction(+:k), reduction(*:k)
do i = 1, 10
k = k + 1
k = k * 3
end do
!$omp end parallel do
!ERROR: 'k' appears in more than one data-sharing clause on the same OpenMP directive
!$omp parallel do reduction(+:k), reduction(*:j), reduction(+:k)
do i = 1, 10
k = k + 1
j = j * 3
end do
!$omp end parallel do
!ERROR: 'k' appears in more than one data-sharing clause on the same OpenMP directive
!$omp parallel do reduction(+:j), reduction(*:k), reduction(+:k)
do i = 1, 10
j = j + 1
k = k + 1
k = k * 3
end do
!$omp end parallel do
!ERROR: 'k' appears in more than one data-sharing clause on the same OpenMP directive
!$omp parallel do reduction(+:j), reduction(*:k), private(k)
do i = 1, 10
j = j + 1
k = k + 1
k = k * 3
end do
!$omp end parallel do
end program omp_reduction