(root)/
gcc-13.2.0/
libgomp/
testsuite/
libgomp.oacc-c-c++-common/
pr95270-1.c
       1  /* { dg-skip-if "" { *-*-* } { "*" } { "-DACC_MEM_SHARED=0" } } */
       2  
       3  #include <assert.h>
       4  #include <openacc.h>
       5  #include <stdint.h>
       6  
       7  int
       8  main ()
       9  {
      10    int data;
      11    int *data_p_dev = (int *) acc_create (&data, sizeof data);
      12    int *data_p = &data;
      13    uintptr_t ptrbits;
      14  
      15    acc_copyin (&data_p, sizeof data_p);
      16  
      17    /* Test attach/detach directives.  */
      18  #pragma acc enter data attach(data_p)
      19  #pragma acc serial copyout(ptrbits) /* { dg-warning "using .vector_length \\(32\\)., ignoring 1" "" { target openacc_nvidia_accel_selected } } */
      20    {
      21      ptrbits = (uintptr_t) data_p;
      22    }
      23  #pragma acc exit data detach(data_p)
      24    assert ((void *) ptrbits == data_p_dev);
      25  
      26    acc_update_self (&data_p, sizeof data_p);
      27    assert (data_p == &data);
      28  
      29    /* Test attach/detach API call.  */
      30    acc_attach ((void **) &data_p);
      31  #pragma acc serial copyout(ptrbits) /* { dg-warning "using .vector_length \\(32\\)., ignoring 1" "" { target openacc_nvidia_accel_selected } } */
      32    {
      33      ptrbits = (uintptr_t) data_p;
      34    }
      35    acc_detach ((void **) &data_p);
      36  
      37    assert ((void *) ptrbits == data_p_dev);
      38    acc_update_self (&data_p, sizeof data_p);
      39    assert (data_p == &data);
      40  
      41    acc_delete (&data_p, sizeof data_p);
      42    acc_delete (&data, sizeof data);
      43  
      44    return 0;
      45  }
      46