blob: 9b20cfef8c7a7c74c603c3d14fbbd93bbbff8d44 [file] [log] [blame]
/* Test parsing of #pragma omp declare variant */
/* { dg-do compile } */
int fn0 (int);
int fn6 (int);
#pragma omp declare variant (fn0) match (user={condition(0)})
int a; /* { dg-error "not immediately followed by a function declaration or definition" } */
#pragma omp declare variant (fn0) match (user={condition(0)})
int fn1 (int a), fn2 (int a); /* { dg-error "not immediately followed by a single function declaration or definition" } */
#pragma omp declare variant (fn0) match (user={condition(0)})
int b, fn3 (int a); /* { dg-error "not immediately followed by a function declaration or definition" } */
#pragma omp declare variant (fn0) match (user={condition(0)})
int fn4 (int a), c; /* { dg-error "not immediately followed by a function declaration or definition" } */
int t;
#pragma omp declare variant (fn0) match (user={condition(0)})
#pragma omp declare variant (fn6) match (implementation={vendor(unknown)})
#pragma omp threadprivate(t) /* { dg-error "must be followed by function declaration or definition or another" } */
int fn5 (int a);
#pragma omp declare variant (1 + 2) match (user={condition(0)}) /* { dg-error "expected identifier before numeric constant" } */
int fn7 (int);
#pragma omp declare variant (t) match (user={condition(0)}) /* { dg-error "variant 't' is not a function" } */
int fn8 (int);
long fn9 (char, short);
#pragma omp declare variant (fn9) match (implementation={vendor(unknown)}) /* { dg-error "variant 'fn9' and base 'fn10' have incompatible types" } */
int fn10 (int, long long);
#pragma omp declare variant (memcpy) match (implementation={vendor(llvm)}) /* { dg-error "'memcpy' undeclared here" } */
void *fn11 (void *, const void *, __SIZE_TYPE__);
#pragma omp declare variant (__builtin_memmove) match (implementation={vendor(gnu)}) /* { dg-error "variant '__builtin_memmove' is a built-in" } */
void *fn12 (void *, const void *, __SIZE_TYPE__);