| /* { dg-do compile } */ | |
| #include <omp.h> | |
| void f() | |
| { | |
| omp_allocator_handle_t my; | |
| struct t { | |
| omp_allocator_handle_t a1; | |
| } s; | |
| const omp_allocator_handle_t my3 = (omp_allocator_handle_t) 300; | |
| omp_allocator_handle_t my4[1]; | |
| const omp_alloctrait_t t[] = {}; | |
| #pragma omp target uses_allocators(my, omp_default_mem_alloc, omp_null_allocator) // OK | |
| ; | |
| #pragma omp target uses_allocators(my) firstprivate(my) // { dg-error "'my' appears more than once in data clauses" } | |
| ; | |
| #pragma omp target private(my) uses_allocators(my) // { dg-error "'my' appears more than once in data clauses" } | |
| ; | |
| #pragma omp target uses_allocators(my3) | |
| ; | |
| #pragma omp target uses_allocators(s.a1) | |
| // { dg-error "expected '\\)' before '\\.' token" "" { target *-*-* } .-1 } | |
| // { dg-error "allocator 's' must be of 'omp_allocator_handle_t' type" "" { target *-*-* } .-2 } | |
| ; | |
| #pragma omp target uses_allocators(my4) | |
| // { dg-error "allocator 'my4' must be of 'omp_allocator_handle_t' type" "" { target *-*-* } .-1 } | |
| ; | |
| #pragma omp target uses_allocators(my4[0]) | |
| // { dg-error "expected '\\)' before '\\\[' token" "" { target *-*-* } .-1 } | |
| // { dg-error "allocator 'my4' must be of 'omp_allocator_handle_t' type" "" { target *-*-* } .-2 } | |
| ; | |
| #pragma omp target uses_allocators(memspace(omp_default_mem_space) : my, my(t)) // { dg-error "legacy 'my\\(t\\)' traits syntax not allowed in 'uses_allocators' clause when using modifiers" } | |
| ; | |
| } |