(root)/
gcc-13.2.0/
libgomp/
testsuite/
libgomp.oacc-c-c++-common/
no_create-5.c
       1  /* Test 'no_create' clause on 'data' construct and nested compute construct,
       2     with data not present on the device.  */
       3  
       4  #include <stdlib.h>
       5  #include <stdio.h>
       6  #include <openacc.h>
       7  
       8  #define N 128
       9  
      10  int
      11  main (int argc, char *argv[])
      12  {
      13    int var;
      14    int *arr = (int *) malloc (N * sizeof (*arr));
      15    int *devptr[2];
      16  
      17  #pragma acc data no_create(var, arr[0:N])
      18    {
      19      devptr[0] = (int *) acc_deviceptr (&var);
      20      devptr[1] = (int *) acc_deviceptr (&arr[2]);
      21  
      22  #if ACC_MEM_SHARED
      23      if (devptr[0] == NULL)
      24        __builtin_abort ();
      25      if (devptr[1] == NULL)
      26        __builtin_abort ();
      27  #else
      28      if (devptr[0] != NULL)
      29        __builtin_abort ();
      30      if (devptr[1] != NULL)
      31        __builtin_abort ();
      32  #endif
      33  
      34  #pragma acc parallel copyout(devptr) // TODO implicit 'copy(var)' -- huh?!
      35      {
      36        devptr[0] = &var;
      37        devptr[1] = &arr[2];
      38      }
      39  
      40      if (devptr[0] != &var)
      41        __builtin_abort (); // { dg-xfail-run-if "TODO" { *-*-* } { "-DACC_MEM_SHARED=0" } }
      42      if (devptr[1] != &arr[2])
      43        __builtin_abort ();
      44    }
      45  
      46    free (arr);
      47  
      48    return 0;
      49  }