! 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 real :: r character :: c complex :: z logical :: l ! * is allowed for integer, real, and complex ! but not for logical or character ! ERROR: The type of 'c' is incompatible with the reduction operator. ! ERROR: The type of 'l' is incompatible with the reduction operator. !$omp parallel reduction(*:i,r,c,z,l) !$omp end parallel ! + is allowed for integer, real, and complex ! but not for logical or character ! ERROR: The type of 'c' is incompatible with the reduction operator. ! ERROR: The type of 'l' is incompatible with the reduction operator. !$omp parallel reduction(+:i,r,c,z,l) !$omp end parallel ! - is deprecated for all types ! ERROR: The minus reduction operator is deprecated since OpenMP 5.2 and is not supported in the REDUCTION clause. !$omp parallel reduction(-:i,r,c,z,l) !$omp end parallel ! .and. is only supported for logical operations ! ERROR: The type of 'i' is incompatible with the reduction operator. ! ERROR: The type of 'r' is incompatible with the reduction operator. ! ERROR: The type of 'c' is incompatible with the reduction operator. ! ERROR: The type of 'z' is incompatible with the reduction operator. !$omp parallel reduction(.and.:i,r,c,z,l) !$omp end parallel ! .or. is only supported for logical operations ! ERROR: The type of 'i' is incompatible with the reduction operator. ! ERROR: The type of 'r' is incompatible with the reduction operator. ! ERROR: The type of 'c' is incompatible with the reduction operator. ! ERROR: The type of 'z' is incompatible with the reduction operator. !$omp parallel reduction(.or.:i,r,c,z,l) !$omp end parallel ! .eqv. is only supported for logical operations ! ERROR: The type of 'i' is incompatible with the reduction operator. ! ERROR: The type of 'r' is incompatible with the reduction operator. ! ERROR: The type of 'c' is incompatible with the reduction operator. ! ERROR: The type of 'z' is incompatible with the reduction operator. !$omp parallel reduction(.eqv.:i,r,c,z,l) !$omp end parallel ! .neqv. is only supported for logical operations ! ERROR: The type of 'i' is incompatible with the reduction operator. ! ERROR: The type of 'r' is incompatible with the reduction operator. ! ERROR: The type of 'c' is incompatible with the reduction operator. ! ERROR: The type of 'z' is incompatible with the reduction operator. !$omp parallel reduction(.neqv.:i,r,c,z,l) !$omp end parallel ! iand only supports integers ! ERROR: The type of 'r' is incompatible with the reduction operator. ! ERROR: The type of 'c' is incompatible with the reduction operator. ! ERROR: The type of 'z' is incompatible with the reduction operator. ! ERROR: The type of 'l' is incompatible with the reduction operator. !$omp parallel reduction(iand:i,r,c,z,l) !$omp end parallel ! ior only supports integers ! ERROR: The type of 'r' is incompatible with the reduction operator. ! ERROR: The type of 'c' is incompatible with the reduction operator. ! ERROR: The type of 'z' is incompatible with the reduction operator. ! ERROR: The type of 'l' is incompatible with the reduction operator. !$omp parallel reduction(ior:i,r,c,z,l) !$omp end parallel ! ieor only supports integers ! ERROR: The type of 'r' is incompatible with the reduction operator. ! ERROR: The type of 'c' is incompatible with the reduction operator. ! ERROR: The type of 'z' is incompatible with the reduction operator. ! ERROR: The type of 'l' is incompatible with the reduction operator. !$omp parallel reduction(ieor:i,r,c,z,l) !$omp end parallel ! max arguments may be integer, real, or character: ! ERROR: The type of 'z' is incompatible with the reduction operator. ! ERROR: The type of 'l' is incompatible with the reduction operator. !$omp parallel reduction(max:i,r,c,z,l) !$omp end parallel ! min arguments may be integer, real, or character: ! ERROR: The type of 'z' is incompatible with the reduction operator. ! ERROR: The type of 'l' is incompatible with the reduction operator. !$omp parallel reduction(min:i,r,c,z,l) !$omp end parallel end program omp_reduction