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
44 lines
1.1 KiB
Fortran
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
|