blob: 4a13663b6091a6c50386e98c87a1998217e7300d [file] [log] [blame]
/* { dg-skip-if "" { *-*-* } { "*" } { "-DACC_MEM_SHARED=0" } } */
#include <assert.h>
#include <openacc.h>
#include <stdint.h>
int
main ()
{
int data;
int *data_p_dev = (int *) acc_create (&data, sizeof data);
int *data_p = &data;
uintptr_t ptrbits;
acc_copyin (&data_p, sizeof data_p);
/* Test attach/detach directives. */
#pragma acc enter data attach(data_p)
#pragma acc serial copyout(ptrbits) /* { dg-warning "using .vector_length \\(32\\)., ignoring 1" "" { target openacc_nvidia_accel_selected } } */
{
ptrbits = (uintptr_t) data_p;
}
#pragma acc exit data detach(data_p)
assert ((void *) ptrbits == data_p_dev);
acc_update_self (&data_p, sizeof data_p);
assert (data_p == &data);
/* Test attach/detach API call. */
acc_attach ((void **) &data_p);
#pragma acc serial copyout(ptrbits) /* { dg-warning "using .vector_length \\(32\\)., ignoring 1" "" { target openacc_nvidia_accel_selected } } */
{
ptrbits = (uintptr_t) data_p;
}
acc_detach ((void **) &data_p);
assert ((void *) ptrbits == data_p_dev);
acc_update_self (&data_p, sizeof data_p);
assert (data_p == &data);
acc_delete (&data_p, sizeof data_p);
acc_delete (&data, sizeof data);
return 0;
}