(root)/
gcc-13.2.0/
gcc/
testsuite/
c-c++-common/
goacc/
deviceptr-1.c
       1  /* { dg-skip-if "not yet" { c++ } } */
       2  
       3  void
       4  fun1 (void)
       5  {
       6  #pragma acc parallel deviceptr(u) /* { dg-error "'u' undeclared" } */
       7    ;
       8  #pragma acc kernels deviceptr(u[0:4]) /* { dg-error "expected '\\\)' before '\\\[' token" } */
       9    ;
      10  
      11  #pragma acc data deviceptr(fun1) /* { dg-error "'fun1' is not a variable" } */
      12    ;
      13  #pragma acc parallel deviceptr(fun1[2:5])
      14    /* { dg-error "'fun1' is not a variable" "not a variable" { target *-*-* } .-1 } */
      15    /* { dg-error "expected '\\\)' before '\\\[' token" "array" { target *-*-* } .-2 } */
      16    ;
      17  
      18    int i;
      19  #pragma acc kernels deviceptr(i) /* { dg-error "'i' is not a pointer variable" } */
      20    ;
      21  #pragma acc data deviceptr(i[0:4])
      22    /* { dg-error "'i' is not a pointer variable" "not a pointer variable" { target *-*-* } .-1 } */
      23    /* { dg-error "expected '\\\)' before '\\\[' token" "array" { target *-*-* } .-2 } */
      24    ;
      25  
      26    float fa[10];
      27  #pragma acc parallel deviceptr(fa) /* { dg-error "'fa' is not a pointer variable" } */
      28    ;
      29  #pragma acc kernels deviceptr(fa[1:5])
      30    /* { dg-error "'fa' is not a pointer variable" "not a pointer variable" { target *-*-* } .-1 } */
      31    /* { dg-error "expected '\\\)' before '\\\[' token" "array" { target *-*-* } .-2 } */
      32    ;
      33  
      34    float *fp;
      35  #pragma acc data deviceptr(fp)
      36    ;
      37  #pragma acc parallel deviceptr(fp[0:4]) /* { dg-error "expected '\\\)' before '\\\[' token" } */
      38    ;
      39  }
      40  
      41  void
      42  fun2 (void)
      43  {
      44    int i;
      45    float *fp;
      46  #pragma acc kernels deviceptr(fp,u,fun2,i,fp)
      47    /* { dg-error "'u' undeclared" "u undeclared" { target *-*-* } .-1 } */
      48    /* { dg-error "'fun2' is not a variable" "fun2 not a variable" { target *-*-* } .-2 } */
      49    /* { dg-error "'i' is not a pointer variable" "i not a pointer variable" { target *-*-* } .-3 } */
      50    /* { dg-error "'fp' appears more than once in data clauses" "fp more than once" { target *-*-* } .-4 } */
      51    ;
      52  }
      53  
      54  void
      55  fun3 (void)
      56  {
      57    float *fp;
      58  #pragma acc data deviceptr(fp,fp) /* { dg-error "'fp' appears more than once in data clauses" } */
      59    ;
      60  #pragma acc parallel deviceptr(fp) deviceptr(fp) /* { dg-error "'fp' appears more than once in data clauses" } */
      61    ;
      62  #pragma acc kernels copy(fp) deviceptr(fp) /* { dg-error "'fp' appears more than once in data clauses" } */
      63    ;
      64  }
      65  
      66  extern struct s s1;
      67  extern struct s s2[1]; /* { dg-error "array type has incomplete element type" "" { target c } } */
      68  
      69  void
      70  fun4 (void)
      71  {
      72    struct s *s1_p = &s1;
      73    struct s *s2_p = &s2;
      74  
      75  #pragma acc parallel deviceptr(s1) /* { dg-error "'s1' is not a pointer variable" } */
      76    ;
      77  
      78  #pragma acc parallel deviceptr(s2)
      79    ;
      80  
      81  #pragma acc parallel deviceptr(s1_p)
      82    s1_p = 0;
      83  
      84  #pragma acc parallel deviceptr(s2_p)
      85    s2_p = 0;
      86  }
      87  
      88  void
      89  func5 (float *fp)
      90  {
      91  #pragma acc data deviceptr (fp)
      92    ;
      93  }
      94  
      95  void
      96  func6 (float fp)
      97  {
      98  #pragma acc data deviceptr (fp)	/* { dg-error "is not a pointer variable" } */
      99    ;
     100  }