aboutsummaryrefslogtreecommitdiff
path: root/gcc/testsuite/c-c++-common/gomp/append-args-9.c
blob: 810ab36828ba5d9a0307f5ac64b96c96ae7dfac6 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
#if __cplusplus >= 201103L
# define __GOMP_UINTPTR_T_ENUM : __UINTPTR_TYPE__
#else
# define __GOMP_UINTPTR_T_ENUM
#endif

typedef enum omp_interop_t __GOMP_UINTPTR_T_ENUM
{
  omp_interop_none = 0,
  __omp_interop_t_max__ = __UINTPTR_MAX__
} omp_interop_t;

void f1(omp_interop_t *) { }
/* { dg-error "argument 1 of 'f1' must be of 'omp_interop_t'" "" { target c } .-1 }  */
/* { dg-note "initializing argument 1 of 'void f1\\(omp_interop_t\\*\\)'" "" { target c++ } .-2 }  */
#pragma omp declare variant(f1) match(construct={dispatch}) \
  append_args(interop(targetsync, prefer_type({attr("ompx_fun")})))
void g1(void);
/* { dg-note "'append_args' specified here" "" { target c } .-2 }  */
/* { dg-error "cannot convert 'omp_interop_t' to 'omp_interop_t\\*'" "" { target c++ } .-4 }  */

int f2(omp_interop_t);
#pragma omp declare variant(f2)					\
  append_args(interop(targetsync, prefer_type("cuda")))		\
  match(construct={dispatch})
int g2(void) { return 5; }

int foo (omp_interop_t *obj1)
{
  int res;

  #pragma omp dispatch interop(obj1) device(11)  /* { dg-error "'obj1' must be of 'omp_interop_t'" }  */
    res = g2();
  return res;
}