| // RUN: %clang_cc1 %s -verify -fopenacc |
| |
| struct S { |
| int foo; |
| char Array[1]; |
| }; |
| char *getArrayPtr(); |
| void func() { |
| char Array[10]; |
| char *ArrayPtr = getArrayPtr(); |
| int *readonly; |
| struct S s; |
| |
| for (int i = 0; i < 10; ++i) { |
| // expected-error@+2{{expected '('}} |
| // expected-warning@+1{{OpenACC construct 'cache' not yet implemented, pragma ignored}} |
| #pragma acc cache |
| } |
| |
| for (int i = 0; i < 10; ++i) { |
| // expected-error@+3{{expected '('}} |
| // expected-error@+2{{invalid OpenACC clause 'clause'}} |
| // expected-warning@+1{{OpenACC construct 'cache' not yet implemented, pragma ignored}} |
| #pragma acc cache clause list |
| } |
| |
| for (int i = 0; i < 10; ++i) { |
| // expected-error@+2{{expected expression}} |
| // expected-warning@+1{{OpenACC construct 'cache' not yet implemented, pragma ignored}} |
| #pragma acc cache() |
| } |
| |
| for (int i = 0; i < 10; ++i) { |
| // expected-error@+3{{expected expression}} |
| // expected-error@+2{{invalid OpenACC clause 'clause'}} |
| // expected-warning@+1{{OpenACC construct 'cache' not yet implemented, pragma ignored}} |
| #pragma acc cache() clause-list |
| } |
| |
| for (int i = 0; i < 10; ++i) { |
| // expected-error@+3{{expected ')'}} |
| // expected-note@+2{{to match this '('}} |
| // expected-warning@+1{{OpenACC construct 'cache' not yet implemented, pragma ignored}} |
| #pragma acc cache( |
| } |
| |
| for (int i = 0; i < 10; ++i) { |
| // expected-error@+4{{use of undeclared identifier 'invalid'}} |
| // expected-error@+3{{expected ')'}} |
| // expected-note@+2{{to match this '('}} |
| // expected-warning@+1{{OpenACC construct 'cache' not yet implemented, pragma ignored}} |
| #pragma acc cache(invalid |
| } |
| |
| for (int i = 0; i < 10; ++i) { |
| // expected-error@+3{{expected ')'}} |
| // expected-note@+2{{to match this '('}} |
| // expected-warning@+1{{OpenACC construct 'cache' not yet implemented, pragma ignored}} |
| #pragma acc cache(ArrayPtr |
| } |
| |
| for (int i = 0; i < 10; ++i) { |
| // expected-error@+2{{use of undeclared identifier 'invalid'}} |
| // expected-warning@+1{{OpenACC construct 'cache' not yet implemented, pragma ignored}} |
| #pragma acc cache(invalid) |
| } |
| |
| for (int i = 0; i < 10; ++i) { |
| // expected-warning@+1{{OpenACC construct 'cache' not yet implemented, pragma ignored}} |
| #pragma acc cache(ArrayPtr) |
| } |
| |
| for (int i = 0; i < 10; ++i) { |
| // expected-error@+6{{expected expression}} |
| // expected-error@+5{{expected ']'}} |
| // expected-note@+4{{to match this '['}} |
| // expected-error@+3{{expected ')'}} |
| // expected-note@+2{{to match this '('}} |
| // expected-warning@+1{{OpenACC construct 'cache' not yet implemented, pragma ignored}} |
| #pragma acc cache(ArrayPtr[ |
| } |
| |
| for (int i = 0; i < 10; ++i) { |
| // expected-error@+4{{expected expression}} |
| // expected-error@+3{{expected ']'}} |
| // expected-note@+2{{to match this '['}} |
| // expected-warning@+1{{OpenACC construct 'cache' not yet implemented, pragma ignored}} |
| #pragma acc cache(ArrayPtr[, 5) |
| } |
| |
| for (int i = 0; i < 10; ++i) { |
| // expected-error@+4{{expected expression}} |
| // expected-error@+3{{expected ']'}} |
| // expected-note@+2{{to match this '['}} |
| // expected-warning@+1{{OpenACC construct 'cache' not yet implemented, pragma ignored}} |
| #pragma acc cache(Array[) |
| } |
| |
| for (int i = 0; i < 10; ++i) { |
| // expected-warning@+1{{OpenACC construct 'cache' not yet implemented, pragma ignored}} |
| #pragma acc cache(Array[*readonly]) |
| } |
| |
| for (int i = 0; i < 10; ++i) { |
| // expected-error@+6{{expected expression}} |
| // expected-error@+5{{expected ']'}} |
| // expected-note@+4{{to match this '['}} |
| // expected-error@+3{{expected ')'}} |
| // expected-note@+2{{to match this '('}} |
| // expected-warning@+1{{OpenACC construct 'cache' not yet implemented, pragma ignored}} |
| #pragma acc cache(Array[*readonly: |
| } |
| |
| for (int i = 0; i < 10; ++i) { |
| // expected-warning@+1{{OpenACC construct 'cache' not yet implemented, pragma ignored}} |
| #pragma acc cache(readonly) |
| } |
| |
| for (int i = 0; i < 10; ++i) { |
| // expected-error@+2{{invalid tag 'devnum' on 'cache' directive}} |
| // expected-warning@+1{{OpenACC construct 'cache' not yet implemented, pragma ignored}} |
| #pragma acc cache(devnum:ArrayPtr) |
| } |
| |
| for (int i = 0; i < 10; ++i) { |
| // expected-error@+2{{invalid tag 'invalid' on 'cache' directive}} |
| // expected-warning@+1{{OpenACC construct 'cache' not yet implemented, pragma ignored}} |
| #pragma acc cache(invalid:ArrayPtr) |
| } |
| |
| for (int i = 0; i < 10; ++i) { |
| // expected-warning@+1{{OpenACC construct 'cache' not yet implemented, pragma ignored}} |
| #pragma acc cache(readonly:ArrayPtr) |
| } |
| |
| for (int i = 0; i < 10; ++i) { |
| // expected-warning@+1{{OpenACC construct 'cache' not yet implemented, pragma ignored}} |
| #pragma acc cache(readonly:ArrayPtr[5:1]) |
| } |
| |
| for (int i = 0; i < 10; ++i) { |
| // expected-warning@+1{{OpenACC construct 'cache' not yet implemented, pragma ignored}} |
| #pragma acc cache(readonly:ArrayPtr[5:*readonly]) |
| } |
| |
| for (int i = 0; i < 10; ++i) { |
| // expected-warning@+1{{OpenACC construct 'cache' not yet implemented, pragma ignored}} |
| #pragma acc cache(readonly:ArrayPtr[5:*readonly], Array) |
| } |
| |
| for (int i = 0; i < 10; ++i) { |
| // expected-warning@+1{{OpenACC construct 'cache' not yet implemented, pragma ignored}} |
| #pragma acc cache(readonly:ArrayPtr[5:*readonly], Array[*readonly:3]) |
| } |
| |
| for (int i = 0; i < 10; ++i) { |
| // expected-warning@+1{{OpenACC construct 'cache' not yet implemented, pragma ignored}} |
| #pragma acc cache(readonly:ArrayPtr[5 + i:*readonly], Array[*readonly + i:3]) |
| } |
| |
| for (int i = 0; i < 10; ++i) { |
| // expected-error@+4{{expected expression}} |
| // expected-error@+3{{expected ')'}} |
| // expected-note@+2{{to match this '('}} |
| // expected-warning@+1{{OpenACC construct 'cache' not yet implemented, pragma ignored}} |
| #pragma acc cache(readonly:ArrayPtr[5:*readonly], |
| } |
| |
| for (int i = 0; i < 10; ++i) { |
| // expected-error@+2{{expected expression}} |
| // expected-warning@+1{{OpenACC construct 'cache' not yet implemented, pragma ignored}} |
| #pragma acc cache(readonly:ArrayPtr[5:*readonly],) |
| } |
| |
| for (int i = 0; i < 10; ++i) { |
| // expected-warning@+2{{left operand of comma operator has no effect}} |
| // expected-warning@+1{{OpenACC construct 'cache' not yet implemented, pragma ignored}} |
| #pragma acc cache(readonly:ArrayPtr[5,6:*readonly]) |
| } |
| |
| for (int i = 0; i < 10; ++i) { |
| // expected-warning@+2{{left operand of comma operator has no effect}} |
| // expected-warning@+1{{OpenACC construct 'cache' not yet implemented, pragma ignored}} |
| #pragma acc cache(readonly:ArrayPtr[5:3, *readonly], ArrayPtr[0]) |
| } |
| |
| for (int i = 0; i < 10; ++i) { |
| // expected-warning@+1{{OpenACC construct 'cache' not yet implemented, pragma ignored}} |
| #pragma acc cache(readonly:s.foo) |
| } |
| |
| for (int i = 0; i < 10; ++i) { |
| // expected-warning@+2{{left operand of comma operator has no effect}} |
| // expected-warning@+1{{OpenACC construct 'cache' not yet implemented, pragma ignored}} |
| #pragma acc cache(readonly:s.Array[1,2]) |
| } |
| } |