Files
clang-p2996/clang/test/SemaOpenACC/compute-construct-async-clause.c
erichkeane 30cfe2b2ac [OpenACC] Implement 'async' clause sema for compute constructs
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).
2024-05-07 07:14:14 -07:00

42 lines
919 B
C

// RUN: %clang_cc1 %s -fopenacc -verify
short getS();
void Test() {
#pragma acc parallel async
while(1);
#pragma acc parallel async(1)
while(1);
#pragma acc kernels async(1)
while(1);
#pragma acc kernels async(-51)
while(1);
#pragma acc serial async(1)
while(1);
// expected-error@+2{{expected ')'}}
// expected-note@+1{{to match this '('}}
#pragma acc serial async(1, 2)
while(1);
struct NotConvertible{} NC;
// expected-error@+1{{OpenACC clause 'async' requires expression of integer type ('struct NotConvertible' invalid)}}
#pragma acc parallel async(NC)
while(1);
#pragma acc kernels async(getS())
while(1);
struct Incomplete *SomeIncomplete;
// expected-error@+1{{OpenACC clause 'async' requires expression of integer type ('struct Incomplete' invalid)}}
#pragma acc kernels async(*SomeIncomplete)
while(1);
enum E{A} SomeE;
#pragma acc kernels async(SomeE)
while(1);
}