#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(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(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; }