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