
This is a pretty simple clause, it takes an 'async-argument', which effectively needs to be just parsed as an 'int' argument, since it can be an arbitrarly integer at runtime (and negative values are legal for implementation defined values). This patch also cleans up the async-argument parsing, so 'wait' got some minor quality-of-life improvements for parsing (both clause and construct).
174 lines
8.3 KiB
C
174 lines
8.3 KiB
C
// RUN: %clang_cc1 %s -verify -fopenacc
|
|
|
|
void func() {
|
|
int i, j;
|
|
|
|
// expected-warning@+1{{OpenACC construct 'wait' not yet implemented, pragma ignored}}
|
|
#pragma acc wait
|
|
|
|
// expected-error@+2{{invalid OpenACC clause 'clause'}}
|
|
// expected-warning@+1{{OpenACC construct 'wait' not yet implemented, pragma ignored}}
|
|
#pragma acc wait clause-list
|
|
|
|
// expected-error@+3{{expected ')'}}
|
|
// expected-note@+2{{to match this '('}}
|
|
// expected-warning@+1{{OpenACC construct 'wait' not yet implemented, pragma ignored}}
|
|
#pragma acc wait (
|
|
|
|
// expected-warning@+1{{OpenACC construct 'wait' not yet implemented, pragma ignored}}
|
|
#pragma acc wait ()
|
|
|
|
// expected-error@+2{{invalid OpenACC clause 'clause'}}
|
|
// expected-warning@+1{{OpenACC construct 'wait' not yet implemented, pragma ignored}}
|
|
#pragma acc wait () clause-list
|
|
|
|
// expected-error@+4{{expected expression}}
|
|
// expected-error@+3{{expected ')'}}
|
|
// expected-note@+2{{to match this '('}}
|
|
// expected-warning@+1{{OpenACC construct 'wait' not yet implemented, pragma ignored}}
|
|
#pragma acc wait (devnum:
|
|
|
|
// expected-error@+2{{expected expression}}
|
|
// expected-warning@+1{{OpenACC construct 'wait' not yet implemented, pragma ignored}}
|
|
#pragma acc wait (devnum:)
|
|
|
|
// expected-error@+3{{expected expression}}
|
|
// expected-error@+2{{invalid OpenACC clause 'clause'}}
|
|
// expected-warning@+1{{OpenACC construct 'wait' not yet implemented, pragma ignored}}
|
|
#pragma acc wait (devnum:) clause-list
|
|
|
|
// expected-error@+4{{expected ':'}}
|
|
// expected-error@+3{{expected ')'}}
|
|
// expected-note@+2{{to match this '('}}
|
|
// expected-warning@+1{{OpenACC construct 'wait' not yet implemented, pragma ignored}}
|
|
#pragma acc wait (devnum: i + j
|
|
|
|
// expected-error@+2{{expected ':'}}
|
|
// expected-warning@+1{{OpenACC construct 'wait' not yet implemented, pragma ignored}}
|
|
#pragma acc wait (devnum: i + j)
|
|
|
|
// expected-error@+3{{expected ':'}}
|
|
// expected-error@+2{{invalid OpenACC clause 'clause'}}
|
|
// expected-warning@+1{{OpenACC construct 'wait' not yet implemented, pragma ignored}}
|
|
#pragma acc wait (devnum: i + j) clause-list
|
|
|
|
// expected-error@+3{{expected ')'}}
|
|
// expected-note@+2{{to match this '('}}
|
|
// expected-warning@+1{{OpenACC construct 'wait' not yet implemented, pragma ignored}}
|
|
#pragma acc wait (queues:
|
|
|
|
// expected-warning@+1{{OpenACC construct 'wait' not yet implemented, pragma ignored}}
|
|
#pragma acc wait (queues:)
|
|
|
|
// expected-error@+2{{invalid OpenACC clause 'clause'}}
|
|
// expected-warning@+1{{OpenACC construct 'wait' not yet implemented, pragma ignored}}
|
|
#pragma acc wait (queues:) clause-list
|
|
|
|
// expected-error@+3{{expected ')'}}
|
|
// expected-note@+2{{to match this '('}}
|
|
// expected-warning@+1{{OpenACC construct 'wait' not yet implemented, pragma ignored}}
|
|
#pragma acc wait (devnum: i + j:queues:
|
|
|
|
// expected-warning@+1{{OpenACC construct 'wait' not yet implemented, pragma ignored}}
|
|
#pragma acc wait (devnum: i + j:queues:)
|
|
|
|
// expected-error@+2{{invalid OpenACC clause 'clause'}}
|
|
// expected-warning@+1{{OpenACC construct 'wait' not yet implemented, pragma ignored}}
|
|
#pragma acc wait (devnum: i + j:queues:) clause-list
|
|
|
|
// expected-error@+5{{use of undeclared identifier 'devnum'}}
|
|
// expected-error@+4{{expected ','}}
|
|
// expected-error@+3{{expected ')'}}
|
|
// expected-note@+2{{to match this '('}}
|
|
// expected-warning@+1{{OpenACC construct 'wait' not yet implemented, pragma ignored}}
|
|
#pragma acc wait (queues:devnum: i + j
|
|
|
|
// expected-error@+3{{use of undeclared identifier 'devnum'}}
|
|
// expected-error@+2{{expected ','}}
|
|
// expected-warning@+1{{OpenACC construct 'wait' not yet implemented, pragma ignored}}
|
|
#pragma acc wait (queues:devnum: i + j)
|
|
|
|
// expected-error@+4{{use of undeclared identifier 'devnum'}}
|
|
// expected-error@+3{{expected ','}}
|
|
// expected-error@+2{{invalid OpenACC clause 'clause'}}
|
|
// expected-warning@+1{{OpenACC construct 'wait' not yet implemented, pragma ignored}}
|
|
#pragma acc wait (queues:devnum: i + j) clause-list
|
|
|
|
// expected-error@+4{{OpenACC directive 'wait' requires expression of integer type ('double' invalid)}}
|
|
// expected-error@+3{{expected ')'}}
|
|
// expected-note@+2{{to match this '('}}
|
|
// expected-warning@+1{{OpenACC construct 'wait' not yet implemented, pragma ignored}}
|
|
#pragma acc wait(i, j, 1+1, 3.3
|
|
|
|
// expected-error@+2{{OpenACC directive 'wait' requires expression of integer type ('double' invalid)}}
|
|
// expected-warning@+1{{OpenACC construct 'wait' not yet implemented, pragma ignored}}
|
|
#pragma acc wait(i, j, 1+1, 3.3)
|
|
// expected-error@+3{{OpenACC directive 'wait' requires expression of integer type ('double' invalid)}}
|
|
// expected-error@+2{{invalid OpenACC clause 'clause'}}
|
|
// expected-warning@+1{{OpenACC construct 'wait' not yet implemented, pragma ignored}}
|
|
#pragma acc wait(i, j, 1+1, 3.3) clause-list
|
|
|
|
// expected-error@+4{{expected expression}}
|
|
// expected-error@+3{{expected ')'}}
|
|
// expected-note@+2{{to match this '('}}
|
|
// expected-warning@+1{{OpenACC construct 'wait' not yet implemented, pragma ignored}}
|
|
#pragma acc wait(,
|
|
|
|
// expected-error@+2{{expected expression}}
|
|
// expected-warning@+1{{OpenACC construct 'wait' not yet implemented, pragma ignored}}
|
|
#pragma acc wait(,)
|
|
|
|
// expected-error@+3{{expected expression}}
|
|
// expected-error@+2{{invalid OpenACC clause 'clause'}}
|
|
// expected-warning@+1{{OpenACC construct 'wait' not yet implemented, pragma ignored}}
|
|
#pragma acc wait(,) clause-list
|
|
|
|
// expected-error@+4{{OpenACC directive 'wait' requires expression of integer type ('double' invalid)}}
|
|
// expected-error@+3{{expected ')'}}
|
|
// expected-note@+2{{to match this '('}}
|
|
// expected-warning@+1{{OpenACC construct 'wait' not yet implemented, pragma ignored}}
|
|
#pragma acc wait(queues:i, j, 1+1, 3.3
|
|
|
|
// expected-error@+5{{OpenACC directive 'wait' requires expression of integer type ('double' invalid)}}
|
|
// expected-error@+4{{expected expression}}
|
|
// expected-error@+3{{expected ')'}}
|
|
// expected-note@+2{{to match this '('}}
|
|
// expected-warning@+1{{OpenACC construct 'wait' not yet implemented, pragma ignored}}
|
|
#pragma acc wait(queues:i, j, 1+1, 3.3,
|
|
|
|
// expected-error@+2{{OpenACC directive 'wait' requires expression of integer type ('double' invalid)}}
|
|
// expected-warning@+1{{OpenACC construct 'wait' not yet implemented, pragma ignored}}
|
|
#pragma acc wait(queues:i, j, 1+1, 3.3)
|
|
|
|
// expected-error@+3{{OpenACC directive 'wait' requires expression of integer type ('double' invalid)}}
|
|
// expected-error@+2{{invalid OpenACC clause 'clause'}}
|
|
// expected-warning@+1{{OpenACC construct 'wait' not yet implemented, pragma ignored}}
|
|
#pragma acc wait(queues:i, j, 1+1, 3.3) clause-list
|
|
|
|
// expected-error@+4{{OpenACC directive 'wait' requires expression of integer type ('double' invalid)}}
|
|
// expected-error@+3{{expected ')'}}
|
|
// expected-note@+2{{to match this '('}}
|
|
// expected-warning@+1{{OpenACC construct 'wait' not yet implemented, pragma ignored}}
|
|
#pragma acc wait(devnum:3:i, j, 1+1, 3.3
|
|
// expected-error@+2{{OpenACC directive 'wait' requires expression of integer type ('double' invalid)}}
|
|
// expected-warning@+1{{OpenACC construct 'wait' not yet implemented, pragma ignored}}
|
|
#pragma acc wait(devnum:3:i, j, 1+1, 3.3)
|
|
// expected-error@+3{{OpenACC directive 'wait' requires expression of integer type ('double' invalid)}}
|
|
// expected-error@+2{{invalid OpenACC clause 'clause'}}
|
|
// expected-warning@+1{{OpenACC construct 'wait' not yet implemented, pragma ignored}}
|
|
#pragma acc wait(devnum:3:i, j, 1+1, 3.3) clause-list
|
|
|
|
// expected-error@+4{{OpenACC directive 'wait' requires expression of integer type ('double' invalid)}}
|
|
// expected-error@+3{{expected ')'}}
|
|
// expected-note@+2{{to match this '('}}
|
|
// expected-warning@+1{{OpenACC construct 'wait' not yet implemented, pragma ignored}}
|
|
#pragma acc wait(devnum:3:queues:i, j, 1+1, 3.3
|
|
// expected-error@+2{{OpenACC directive 'wait' requires expression of integer type ('double' invalid)}}
|
|
// expected-warning@+1{{OpenACC construct 'wait' not yet implemented, pragma ignored}}
|
|
#pragma acc wait(devnum:3:queues:i, j, 1+1, 3.3)
|
|
// expected-error@+3{{OpenACC directive 'wait' requires expression of integer type ('double' invalid)}}
|
|
// expected-error@+2{{invalid OpenACC clause 'clause'}}
|
|
// expected-warning@+1{{OpenACC construct 'wait' not yet implemented, pragma ignored}}
|
|
#pragma acc wait(devnum:3:queues:i, j, 1+1, 3.3) clause-list
|
|
}
|