view gcc/testsuite/gcc.dg/gomp/declare-variant-1.c @ 152:2b5abeee2509

update gcc11
author anatofuz
date Mon, 25 May 2020 07:50:57 +0900
parents 1830386684a0
children
line wrap: on
line source

/* 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__);