(root)/
gcc-13.2.0/
libgomp/
testsuite/
libgomp.oacc-c-c++-common/
declare-3.c
       1  #include <stdlib.h>
       2  #include <openacc.h>
       3  
       4  float *b;
       5  #pragma acc declare deviceptr (b)
       6  
       7  #pragma acc routine
       8  float *
       9  subr2 (void)
      10  {
      11    return b;
      12  }
      13  
      14  float
      15  subr1 (float a)
      16  {
      17    float b;
      18  #pragma acc declare present_or_copy (b)
      19    float c;
      20  #pragma acc declare present_or_copyin (c)
      21    float d;
      22  #pragma acc declare present_or_create (d)
      23    float e;
      24  #pragma acc declare present_or_copyout (e)
      25  
      26  #pragma acc parallel copy (a)
      27    {
      28      b = a;
      29      c = b;
      30      d = c;
      31      e = d;
      32      a = e;
      33    }
      34  
      35    return a;
      36  }
      37  
      38  int
      39  main (int argc, char **argv)
      40  {
      41    float a;
      42    float *c;
      43  
      44    a = 2.0;
      45  
      46    a = subr1 (a);
      47  
      48    if (a != 2.0)
      49      abort ();
      50  
      51    b = (float *) acc_malloc (sizeof (float));
      52  
      53    c = subr2 ();
      54  
      55    if (b != c)
      56      abort ();
      57  
      58    return 0;
      59  }