2 // { dg-options "-fopenmp" }
8 A () : a(2), b(3), c(d) {}
9 A (int x) : a(2), b(x), c(d) {}
12 A &operator= (const A &);
13 const A &operator= (const A &) const;
35 #pragma omp declare reduction (+:A:omp_out.b += omp_in.b) initializer (foo (omp_priv))
40 #pragma omp parallel private (a, b, c, e, f, g)
42 #pragma omp parallel firstprivate (a, b, c, e, f, g)
44 #pragma omp parallel for lastprivate (a, b, c, e, f, g)
45 for (int i = 0; i < 10; i++)
47 #pragma omp simd linear (a, b, c : 1)
48 for (int i = 0; i < 10; i++)
54 #pragma omp parallel for reduction (+:a, b, c, e, f)
55 for (int i = 0; i < 10; i++)
63 #pragma omp parallel private (h) // { dg-error "may appear only in .shared. or .firstprivate. clauses" }
65 #pragma omp parallel firstprivate (h)
67 #pragma omp parallel for lastprivate (h) // { dg-error "may appear only in .shared. or .firstprivate. clauses" }
68 for (int i = 0; i < 10; i++)
70 #pragma omp simd linear (h : 1) // { dg-error "may appear only in .shared. or .firstprivate. clauses" }
71 for (int i = 0; i < 10; i++)
73 #pragma omp parallel for reduction (+:h) // { dg-error "may appear only in .shared. or .firstprivate. clauses" }
74 for (int i = 0; i < 10; i++)
76 #pragma omp parallel for reduction (+:g) // { dg-error "has const type for .reduction." }
77 for (int i = 0; i < 10; i++)
79 #pragma omp parallel shared (a)
81 #pragma omp parallel shared (b)
83 #pragma omp parallel shared (c)
85 #pragma omp parallel shared (e)
87 #pragma omp parallel shared (f)
89 #pragma omp parallel shared (g)
91 #pragma omp parallel shared (h)
99 #pragma omp parallel private (b, c, e, f, g)
101 #pragma omp parallel firstprivate (b, c, e, f, g)
103 #pragma omp parallel for lastprivate (b, c, e, f, g)
104 for (int i = 0; i < 10; i++)
106 #pragma omp simd linear (b, c : 1)
107 for (int i = 0; i < 10; i++)
112 #pragma omp parallel for reduction (+:b, c, f)
113 for (int i = 0; i < 10; i++)
121 #pragma omp parallel private (a) // { dg-error "may appear only in .shared. or .firstprivate. clauses" }
123 #pragma omp parallel firstprivate (a)
125 #pragma omp parallel for lastprivate (a) // { dg-error "may appear only in .shared. or .firstprivate. clauses" }
126 for (int i = 0; i < 10; i++)
128 #pragma omp simd linear (a : 1) // { dg-error "may appear only in .shared. or .firstprivate. clauses" }
129 for (int i = 0; i < 10; i++)
131 #pragma omp parallel for reduction (+:a) // { dg-error "may appear only in .shared. or .firstprivate. clauses" }
132 for (int i = 0; i < 10; i++)
134 #pragma omp parallel private (h) // { dg-error "may appear only in .shared. or .firstprivate. clauses" }
136 #pragma omp parallel firstprivate (h)
138 #pragma omp parallel for lastprivate (h) // { dg-error "may appear only in .shared. or .firstprivate. clauses" }
139 for (int i = 0; i < 10; i++)
141 #pragma omp simd linear (h : 1) // { dg-error "may appear only in .shared. or .firstprivate. clauses" }
142 for (int i = 0; i < 10; i++)
144 #pragma omp parallel for reduction (+:h) // { dg-error "may appear only in .shared. or .firstprivate. clauses" }
145 for (int i = 0; i < 10; i++)
147 #pragma omp parallel for reduction (+:e) // { dg-error "has const type for .reduction." }
148 for (int i = 0; i < 10; i++)
150 #pragma omp parallel for reduction (+:g) // { dg-error "has const type for .reduction." }
151 for (int i = 0; i < 10; i++)
153 #pragma omp parallel shared (a)
155 #pragma omp parallel shared (b)
157 #pragma omp parallel shared (c)
159 #pragma omp parallel shared (e)
161 #pragma omp parallel shared (f)
163 #pragma omp parallel shared (g)
165 #pragma omp parallel shared (h)