/* { dg-do compile } */
#include <omp.h>

void
f (omp_allocator_handle_t my_alloc)
{
  #pragma omp target
  {
    int a; /* { dg-error "'my_alloc' in 'allocator' clause inside a target region must be specified in an 'uses_allocators' clause on the 'target' directive" "" { target c } } */
    #pragma omp allocate(a) allocator(my_alloc) /* { dg-message "sorry, unimplemented: '#pragma omp allocate' not yet supported" "" { target c++ } }  */
    a  = 5;
    void *prt = omp_alloc(32, my_alloc);
    #pragma omp parallel allocate(allocator(my_alloc) : a) firstprivate(a) /* { dg-error "allocator 'my_alloc' in 'allocate' clause inside a target region must be specified in an 'uses_allocators' clause on the 'target' directive" } */
      a = 7;
  }
}

void
g (omp_allocator_handle_t my_alloc)
{
  /* The following defines a default-mem-space allocator with no extra traits. */
  #pragma omp target uses_allocators(my_alloc)
  {
    int a;
    #pragma omp allocate(a) allocator(my_alloc)  /* { dg-message "sorry, unimplemented: '#pragma omp allocate' not yet supported" "" { target c++ } }  */
    a  = 5;
    void *prt = omp_alloc(32, my_alloc);
    #pragma omp parallel allocate(allocator(my_alloc) : a) firstprivate(a)
      a = 7;
  }
}
