(root)/
gcc-13.2.0/
libgomp/
testsuite/
libgomp.oacc-c-c++-common/
data-1.c
       1  /* { dg-do run } */
       2  
       3  #include <stdlib.h>
       4  #include <openacc.h>
       5  
       6  int i;
       7  
       8  int
       9  is_mapped (void *p, size_t n)
      10  {
      11  #if ACC_MEM_SHARED
      12    return 1;
      13  #else
      14    return acc_is_present (p, n);
      15  #endif
      16  }
      17  
      18  int main(void)
      19  {
      20    int j;
      21  
      22    i = -1;
      23    j = -2;
      24  #pragma acc data copyin (i, j)
      25    {
      26      if (!is_mapped (&i, sizeof (i)) || !is_mapped (&j, sizeof (j)))
      27        abort ();
      28      if (i != -1 || j != -2)
      29        abort ();
      30      i = 2;
      31      j = 1;
      32      if (i != 2 || j != 1)
      33        abort ();
      34    }
      35    if (i != 2 || j != 1)
      36      abort ();
      37  
      38    i = -1;
      39    j = -2;
      40  #pragma acc data copyout (i, j)
      41    {
      42      if (!is_mapped (&i, sizeof (i)) || !is_mapped (&j, sizeof (j)))
      43        abort ();
      44      if (i != -1 || j != -2)
      45        abort ();
      46      i = 2;
      47      j = 1;
      48      if (i != 2 || j != 1)
      49        abort ();
      50  
      51  #pragma acc parallel present (i, j)
      52      {
      53        i = 4;
      54        j = 2;
      55      }
      56    }
      57    if (i != 4 || j != 2)
      58      abort ();
      59  
      60    i = -1;
      61    j = -2;
      62  #pragma acc data create (i, j)
      63    {
      64      if (!is_mapped (&i, sizeof (i)) || !is_mapped (&j, sizeof (j)))
      65        abort ();
      66      if (i != -1 || j != -2)
      67        abort ();
      68      i = 2;
      69      j = 1;
      70      if (i != 2 || j != 1)
      71        abort ();
      72    }
      73    if (i != 2 || j != 1)
      74      abort ();
      75  
      76    i = -1;
      77    j = -2;
      78  #pragma acc data present_or_copyin (i, j)
      79    {
      80      if (!is_mapped (&i, sizeof (i)) || !is_mapped (&j, sizeof (j)))
      81        abort ();
      82      if (i != -1 || j != -2)
      83        abort ();
      84      i = 2;
      85      j = 1;
      86      if (i != 2 || j != 1)
      87        abort ();
      88    }
      89    if (i != 2 || j != 1)
      90      abort ();
      91  
      92    i = -1;
      93    j = -2;
      94  #pragma acc data present_or_copyout (i, j)
      95    {
      96      if (!is_mapped (&i, sizeof (i)) || !is_mapped (&j, sizeof (j)))
      97        abort ();
      98      if (i != -1 || j != -2)
      99        abort ();
     100      i = 2;
     101      j = 1;
     102      if (i != 2 || j != 1)
     103        abort ();
     104  
     105  #pragma acc parallel present (i, j)
     106      {
     107        i = 4;
     108        j = 2;
     109      }
     110    }
     111    if (i != 4 || j != 2)
     112      abort ();
     113  
     114    i = -1;
     115    j = -2;
     116  #pragma acc data present_or_copy (i, j)
     117    {
     118      if (!is_mapped (&i, sizeof (i)) || !is_mapped (&j, sizeof (j)))
     119        abort ();
     120      if (i != -1 || j != -2)
     121        abort ();
     122      i = 2;
     123      j = 1;
     124      if (i != 2 || j != 1)
     125        abort ();
     126    }
     127  #if ACC_MEM_SHARED
     128    if (i != 2 || j != 1)
     129      abort ();
     130  #else
     131    if (i != -1 || j != -2)
     132      abort ();
     133  #endif
     134  
     135    i = -1;
     136    j = -2;
     137  #pragma acc data present_or_create (i, j)
     138    {
     139      if (!is_mapped (&i, sizeof (i)) || !is_mapped (&j, sizeof (j)))
     140        abort ();
     141      i = 2;
     142      j = 1;
     143      if (i != 2 || j != 1)
     144        abort ();
     145    }
     146  
     147    if (i != 2 || j != 1)
     148      abort ();
     149  
     150    i = -1;
     151    j = -2;
     152  #pragma acc data copyin (i, j)
     153    {
     154  #pragma acc data present (i, j)
     155      {
     156        if (!is_mapped (&i, sizeof (i)) || !is_mapped (&j, sizeof (j)))
     157          abort ();
     158        if (i != -1 || j != -2)
     159          abort ();
     160        i = 2;
     161        j = 1;
     162        if (i != 2 || j != 1)
     163          abort ();
     164      }
     165    }
     166    if (i != 2 || j != 1)
     167      abort ();
     168  
     169    i = -1;
     170    j = -2;
     171  #pragma acc data
     172    {
     173  #if !ACC_MEM_SHARED
     174      if (is_mapped (&i, sizeof (i)) || is_mapped (&j, sizeof (j)))
     175        abort ();
     176  #endif
     177      if (i != -1 || j != -2)
     178        abort ();
     179      i = 2;
     180      j = 1;
     181      if (i != 2 || j != 1)
     182        abort ();
     183    }
     184    if (i != 2 || j != 1)
     185      abort ();
     186  
     187    return 0;
     188  }