(root)/
gcc-13.2.0/
libgomp/
testsuite/
libgomp.c-c++-common/
target-has-device-addr-1.c
       1  /* Testing the 'has_device_addr' clause on the target construct with
       2     enclosing 'target data' construct. */
       3  
       4  #define N 40
       5  
       6  int
       7  main ()
       8  {
       9    int x = 24;
      10  
      11    #pragma omp target data map(x) use_device_addr(x)
      12      #pragma omp target has_device_addr(x)
      13        x = 42;
      14    if (x != 42)
      15      __builtin_abort ();
      16  
      17    int y[N];
      18  
      19    for (int i = 0; i < N; i++)
      20      y[i] = 42;
      21    #pragma omp target data map(y) use_device_addr(y)
      22      #pragma omp target has_device_addr(y)
      23        for (int i = 0; i < N; i++)
      24  	y[i] = i;
      25    for (int i = 0; i < N; i++)
      26      if (y[i] != i)
      27        __builtin_abort ();
      28  
      29    #pragma omp target data map(y[:N]) use_device_addr(y)
      30      #pragma omp target has_device_addr(y[:N])
      31        for (int i = 0; i < N; i++)
      32  	y[i] = i + 2;
      33    for (int i = 0; i < N; i++)
      34      if (y[i] != i + 2)
      35        __builtin_abort ();
      36  
      37    #pragma omp target data map(y[:N]) use_device_addr(y)
      38      #pragma omp target has_device_addr(y[24])
      39  	y[24] = 42;
      40    if (y[24] != 42)
      41      __builtin_abort ();
      42  
      43    #pragma omp target data map(y[:N]) use_device_addr(y)
      44      #pragma omp target has_device_addr(y[24:])
      45        for (int i = 24; i < N; i++)
      46  	y[i] = i + 3;
      47    for (int i = 24; i < N; i++)
      48      if (y[i] != i + 3)
      49        __builtin_abort ();
      50  
      51    #pragma omp target data map(y[:N]) use_device_addr(y)
      52      #pragma omp target has_device_addr(y[12:24])
      53        for (int i = 12; i < 24; i++)
      54  	y[i] = i + 4;
      55    for (int i = 12; i < 24; i++)
      56      if (y[i] != i + 4)
      57        __builtin_abort ();
      58  
      59    int u[0];
      60    #pragma omp target data map(u) use_device_addr(u)
      61      #pragma omp target has_device_addr(u)
      62    ;
      63  
      64    struct S { int m; } s;
      65    s.m = 42;
      66    #pragma omp target data map (s) use_device_addr (s)
      67      #pragma omp target has_device_addr (s)
      68        ++s.m;
      69    if (s.m != 43)
      70      __builtin_abort ();
      71  
      72    return 0;
      73  }