brintos

brintos / llvm-project-archived public Read only

0
0
Text · 2.6 KiB · 45e41f2 Raw
103 lines · plain
1! REQUIRES: openmp_runtime2 3! RUN: %python %S/../test_errors.py %s %flang_fc1 %openmp_flags4 5! OpenMP Atomic construct6! section 2.17.77! operator is one of +, *, -, /, .AND., .OR., .EQV., or .NEQV8 9program OmpAtomic10   use omp_lib11   CHARACTER c*3, d*312   LOGICAL l, m, n13 14   a = 115   b = 216   c = 'foo'17   d = 'bar'18   m = .TRUE.19   n = .FALSE.20   !$omp parallel num_threads(4)21 22   !$omp atomic23   a = a + (4*2)24   !$omp atomic25   a = a*(b + 1)26   !$omp atomic27   a = a - 328   !$omp atomic29   a = a/(b + 1)30   !$omp atomic31   !ERROR: The ** operator is not a valid ATOMIC UPDATE operation32   a = a**433   !$omp atomic 34   !ERROR: Atomic variable c cannot have CHARACTER type35   !ERROR: The atomic variable c should appear as an argument in the update operation36   c = d 37   !$omp atomic38   !ERROR: The < operator is not a valid ATOMIC UPDATE operation39   l = a .LT. b40   !$omp atomic41   !ERROR: The <= operator is not a valid ATOMIC UPDATE operation42   l = a .LE. b43   !$omp atomic44   !ERROR: The == operator is not a valid ATOMIC UPDATE operation45   l = a .EQ. b46   !$omp atomic47   !ERROR: The /= operator is not a valid ATOMIC UPDATE operation48   l = a .NE. b49   !$omp atomic50   !ERROR: The >= operator is not a valid ATOMIC UPDATE operation51   l = a .GE. b52   !$omp atomic53   !ERROR: The > operator is not a valid ATOMIC UPDATE operation54   l = a .GT. b55   !$omp atomic56   m = m .AND. n57   !$omp atomic58   m = m .OR. n59   !$omp atomic60   m = m .EQV. n61   !$omp atomic62   m = m .NEQV. n63   !$omp atomic update64   a = a + (4*2)65   !$omp atomic update66   a = a*(b + 1)67   !$omp atomic update68   a = a - 369   !$omp atomic update70   a = a/(b + 1)71   !$omp atomic update72   !ERROR: The ** operator is not a valid ATOMIC UPDATE operation73   a = a**474   !$omp atomic update75   !ERROR: Atomic variable c cannot have CHARACTER type76   !ERROR: This is not a valid ATOMIC UPDATE operation77   c = c//d78   !$omp atomic update79   !ERROR: The < operator is not a valid ATOMIC UPDATE operation80   l = a .LT. b81   !$omp atomic update82   !ERROR: The <= operator is not a valid ATOMIC UPDATE operation83   l = a .LE. b84   !$omp atomic update85   !ERROR: The == operator is not a valid ATOMIC UPDATE operation86   l = a .EQ. b87   !$omp atomic update88   !ERROR: The >= operator is not a valid ATOMIC UPDATE operation89   l = a .GE. b90   !$omp atomic update91   !ERROR: The > operator is not a valid ATOMIC UPDATE operation92   l = a .GT. b93   !$omp atomic update94   m = m .AND. n95   !$omp atomic update96   m = m .OR. n97   !$omp atomic update98   m = m .EQV. n99   !$omp atomic update100   m = m .NEQV. n101   !$omp end parallel102end program OmpAtomic103