/* { dg-do run } */ #include <omp.h> #include <stdlib.h> int main () { int dev = omp_get_num_devices (); int x[6]; omp_interop_t obj1 = omp_interop_none; #pragma omp interop init(targetsync : obj1) depend(in : x) device(dev) if (obj1 != omp_interop_none) abort (); #pragma omp interop use(obj1) #pragma omp interop destroy(obj1) depend(out : x) if (obj1 != omp_interop_none) abort (); omp_set_default_device (dev); omp_interop_t obj2; #pragma omp interop init( \ target, targetsync, \ prefer_type({fr("hip"), attr("ompx_gnu_prio:1", "ompx_gnu_debug")}, \ {attr("ompx_gnu_nicest"), attr("ompx_something")}) : obj1, \ obj2) nowait if (obj1 != omp_interop_none || obj2 != omp_interop_none) abort (); #pragma omp interop use(obj1, obj2) nowait omp_interop_t obj3 = __omp_interop_t_max__; #pragma omp interop init(target : obj3) use(obj2) destroy(obj1) nowait if (obj1 != omp_interop_none || obj3 != omp_interop_none) abort (); #pragma omp interop destroy(obj3, obj2) nowait if (obj2 != omp_interop_none || obj3 != omp_interop_none) abort (); return 0; }