1/* { dg-skip-if "not yet" { c++ } } */
2
3void
4fun1 (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 *-*-* } 13 } */
15  /* { dg-error "expected '\\\)' before '\\\[' token" "array" { target *-*-* } 13 } */
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 *-*-* } 21 } */
23  /* { dg-error "expected '\\\)' before '\\\[' token" "array" { target *-*-* } 21 } */
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 *-*-* } 29 } */
31  /* { dg-error "expected '\\\)' before '\\\[' token" "array" { target *-*-* } 29 } */
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
41void
42fun2 (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 *-*-* } 46 } */
48  /* { dg-error "'fun2' is not a variable" "fun2 not a variable" { target *-*-* } 46 } */
49  /* { dg-error "'i' is not a pointer variable" "i not a pointer variable" { target *-*-* } 46 } */
50  /* { dg-error "'fp' appears more than once in map clauses" "fp more than once" { target *-*-* } 46 } */
51  ;
52}
53
54void
55fun3 (void)
56{
57  float *fp;
58#pragma acc data deviceptr(fp,fp) /* { dg-error "'fp' appears more than once in map clauses" } */
59  ;
60#pragma acc parallel deviceptr(fp) deviceptr(fp) /* { dg-error "'fp' appears more than once in map clauses" } */
61  ;
62#pragma acc kernels copy(fp) deviceptr(fp) /* { dg-error "'fp' appears more than once in map clauses" } */
63  ;
64}
65
66extern struct s s1;
67extern struct s s2[1]; /* { dg-error "array type has incomplete element type" "" { target c } } */
68
69void
70fun4 (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