LWG 3035. std::allocator's constructors should be constexpr
[official-gcc.git] / gcc / testsuite / gcc.dg / gomp / pr67495.c
blob1011a266972657fa67449dbee32bc6e473951039
1 /* PR c/67495 */
2 /* { dg-do compile } */
3 /* { dg-options "-fopenmp" } */
5 int a, b, c;
7 void
8 foo (void)
10 #pragma omp atomic capture
11 a = (float)a + b; /* { dg-error "invalid operator" } */
12 #pragma omp atomic read
13 (float) a = b; /* { dg-error "lvalue required" } */
14 #pragma omp atomic write
15 (float) a = b; /* { dg-error "lvalue required" } */
16 #pragma omp atomic read
17 a = (float) b; /* { dg-error "lvalue required" } */
18 #pragma omp atomic capture
19 (float) a = b += c; /* { dg-error "lvalue required" } */
20 #pragma omp atomic capture
21 { a += b; (float) c = a; } /* { dg-error "lvalue required" } */
22 #pragma omp atomic capture
23 { a += b; c = (float) a; } /* { dg-error "uses two different expressions for memory" } */
24 #pragma omp atomic capture
25 a = (int)a + b; /* { dg-error "invalid operator" } */
26 #pragma omp atomic read
27 (int) a = b; /* { dg-error "lvalue required" } */
28 #pragma omp atomic write
29 (int) a = b; /* { dg-error "lvalue required" } */
30 #pragma omp atomic read
31 a = (int) b; /* { dg-error "lvalue required" } */
32 #pragma omp atomic capture
33 (int) a = b += c; /* { dg-error "lvalue required" } */
34 #pragma omp atomic capture
35 { a += b; (int) c = a; } /* { dg-error "lvalue required" } */
36 #pragma omp atomic capture
37 { a += b; c = (int) a; } /* { dg-error "lvalue required" } */