(root)/
gcc-13.2.0/
libgomp/
testsuite/
libgomp.oacc-c-c++-common/
pr95270-2.c
       1  /* { dg-skip-if "" { *-*-* } { "*" } { "-DACC_MEM_SHARED=0" } } */
       2  
       3  #include <assert.h>
       4  #include <openacc.h>
       5  #include <stdint.h>
       6  
       7  #define N 128
       8  
       9  int
      10  main ()
      11  {
      12    int *ptrarr[N];
      13    int otherarr[N];
      14    int sum = 0, hostsum = 0;
      15  
      16    for (int i = 0; i < N; i++)
      17      {
      18        otherarr[i] = i * 2 + 1;
      19        ptrarr[i] = &otherarr[N - 1 - i];
      20        hostsum += otherarr[i];
      21      }
      22  
      23    acc_copyin (otherarr, sizeof otherarr);
      24    acc_copyin (ptrarr, sizeof ptrarr);
      25  
      26    for (int i = 0; i < N; i++)
      27      {
      28        #pragma acc enter data attach(ptrarr[i])
      29      }
      30  
      31    #pragma acc parallel loop copyin(ptrarr[0:N], otherarr[0:N]) \
      32  		       reduction(+:sum)
      33    for (int i = 0; i < N; i++)
      34      sum += *ptrarr[i];
      35  
      36    for (int i = 0; i < N; i++)
      37      {
      38        #pragma acc exit data detach(ptrarr[i])
      39      }
      40  
      41    assert (sum == hostsum);
      42  
      43    acc_delete (ptrarr, sizeof ptrarr);
      44    acc_delete (otherarr, sizeof otherarr);
      45  
      46    return 0;
      47  }
      48