| /* PR c/67495 */ |
| /* { dg-do compile } */ |
| /* { dg-options "-fopenmp" } */ |
| |
| int a, b, c; |
| |
| void |
| foo (void) |
| { |
| #pragma omp atomic capture |
| a = (float)a + b; /* { dg-error "invalid operator" } */ |
| #pragma omp atomic read |
| (float) a = b; /* { dg-error "lvalue required" } */ |
| #pragma omp atomic write |
| (float) a = b; /* { dg-error "lvalue required" } */ |
| #pragma omp atomic read |
| a = (float) b; /* { dg-error "lvalue required" } */ |
| #pragma omp atomic capture |
| (float) a = b += c; /* { dg-error "lvalue required" } */ |
| #pragma omp atomic capture |
| { a += b; (float) c = a; } /* { dg-error "lvalue required" } */ |
| #pragma omp atomic capture |
| { a += b; c = (float) a; } /* { dg-error "uses two different expressions for memory" } */ |
| #pragma omp atomic capture |
| a = (int)a + b; /* { dg-error "invalid operator" } */ |
| #pragma omp atomic read |
| (int) a = b; /* { dg-error "lvalue required" } */ |
| #pragma omp atomic write |
| (int) a = b; /* { dg-error "lvalue required" } */ |
| #pragma omp atomic read |
| a = (int) b; /* { dg-error "lvalue required" } */ |
| #pragma omp atomic capture |
| (int) a = b += c; /* { dg-error "lvalue required" } */ |
| #pragma omp atomic capture |
| { a += b; (int) c = a; } /* { dg-error "lvalue required" } */ |
| #pragma omp atomic capture |
| { a += b; c = (int) a; } /* { dg-error "lvalue required" } */ |
| } |