[flang] Accept polymorphic component element in storage_size
[llvm-project.git] / flang / test / Semantics / OpenMP / omp-atomic03.f90
blobf829e78426e5a410d44a2aa3a9077303ce3f6ca7
1 ! RUN: %python %S/../test_errors.py %s %flang_fc1 -fopenmp
3 ! OpenMP Atomic construct
4 ! section 2.17.7
5 ! Intrinsic procedure name is one of MAX, MIN, IAND, IOR, or IEOR.
7 program OmpAtomic
8 use omp_lib
9 real x
10 integer :: y, z, a, b, c, d
11 x = 5.73
12 y = 3
13 z = 1
14 !$omp atomic
15 y = IAND(y, 4)
16 !$omp atomic
17 y = IOR(y, 5)
18 !$omp atomic
19 y = IEOR(y, 6)
20 !$omp atomic
21 y = MAX(y, 7)
22 !$omp atomic
23 y = MIN(y, 8)
25 !$omp atomic
26 !ERROR: Atomic update variable 'z' not found in the argument list of intrinsic procedure
27 z = IAND(y, 4)
28 !$omp atomic
29 !ERROR: Atomic update variable 'z' not found in the argument list of intrinsic procedure
30 z = IOR(y, 5)
31 !$omp atomic
32 !ERROR: Atomic update variable 'z' not found in the argument list of intrinsic procedure
33 z = IEOR(y, 6)
34 !$omp atomic
35 !ERROR: Atomic update variable 'z' not found in the argument list of intrinsic procedure
36 z = MAX(y, 7, b, c)
37 !$omp atomic
38 !ERROR: Atomic update variable 'z' not found in the argument list of intrinsic procedure
39 z = MIN(y, 8, a, d)
41 !$omp atomic
42 !ERROR: Invalid intrinsic procedure name in OpenMP ATOMIC (UPDATE) statement
43 y = FRACTION(x)
44 !$omp atomic
45 !ERROR: Invalid intrinsic procedure name in OpenMP ATOMIC (UPDATE) statement
46 y = REAL(x)
47 !$omp atomic update
48 y = IAND(y, 4)
49 !$omp atomic update
50 y = IOR(y, 5)
51 !$omp atomic update
52 y = IEOR(y, 6)
53 !$omp atomic update
54 y = MAX(y, 7)
55 !$omp atomic update
56 y = MIN(y, 8)
58 !$omp atomic update
59 !ERROR: Atomic update variable 'z' not found in the argument list of intrinsic procedure
60 z = IAND(y, 4)
61 !$omp atomic update
62 !ERROR: Atomic update variable 'z' not found in the argument list of intrinsic procedure
63 z = IOR(y, 5)
64 !$omp atomic update
65 !ERROR: Atomic update variable 'z' not found in the argument list of intrinsic procedure
66 z = IEOR(y, 6)
67 !$omp atomic update
68 !ERROR: Atomic update variable 'z' not found in the argument list of intrinsic procedure
69 z = MAX(y, 7)
70 !$omp atomic update
71 !ERROR: Atomic update variable 'z' not found in the argument list of intrinsic procedure
72 z = MIN(y, 8)
74 !$omp atomic update
75 !ERROR: Invalid intrinsic procedure name in OpenMP ATOMIC (UPDATE) statement
76 y = MOD(y, 9)
77 !$omp atomic update
78 !ERROR: Invalid intrinsic procedure name in OpenMP ATOMIC (UPDATE) statement
79 x = ABS(x)
80 end program OmpAtomic
82 subroutine conflicting_types()
83 type simple
84 integer :: z
85 end type
86 real x
87 integer :: y, z
88 type(simple) ::s
89 z = 1
90 !$omp atomic
91 !ERROR: Atomic update variable 'z' not found in the argument list of intrinsic procedure
92 z = IAND(s%z, 4)
93 end subroutine