1 /* Test invalid uses of declare directive. */ 2 /* { dg-do compile } */ 3 4 #pragma acc declare /* { dg-error "no valid clauses" } */ 5 6 #pragma acc declare create(undeclared) /* { dg-error "undeclared" } */ 7 /* { dg-error "no valid clauses" "second error" { target *-*-* } .-1 } */ 8 9 int v0[10]; 10 #pragma acc declare create(v0[1:3]) /* { dg-error "array section" } */ 11 12 int v1; 13 #pragma acc declare create(v1, v1) /* { dg-error "more than once" } */ 14 15 int v2; 16 #pragma acc declare create(v2) 17 #pragma acc declare copyin(v2) /* { dg-error "more than once" } */ 18 19 int v3; 20 #pragma acc declare copy(v3) /* { dg-error "at file scope" } */ 21 22 int v4; 23 #pragma acc declare copyout(v4) /* { dg-error "at file scope" } */ 24 25 int v5; 26 #pragma acc declare present(v5) /* { dg-error "at file scope" } */ 27 28 int v6; 29 #pragma acc declare present_or_copy(v6) /* { dg-error "at file scope" } */ 30 31 int v7; 32 #pragma acc declare present_or_copyin(v7) /* { dg-error "at file scope" } */ 33 34 int v8; 35 #pragma acc declare present_or_copyout(v8) /* { dg-error "at file scope" } */ 36 37 int v9; 38 #pragma acc declare present_or_create(v9) /* { dg-error "at file scope" } */ 39 40 int va10; 41 #pragma acc declare create (va10) 42 #pragma acc declare link (va10) /* { dg-error "more than once" } */ 43 44 int va11; 45 #pragma acc declare link (va11) 46 #pragma acc declare link (va11) /* { dg-error "more than once" } */ 47 48 int va12; 49 #pragma acc declare create (va12) link (va12) /* { dg-error "more than once" } */ 50 51 void f(void)52f (void) 53 { 54 int va0; 55 #pragma acc declare link(va0) /* { dg-error "global variable" } */ 56 57 extern int ve0; 58 #pragma acc declare copy(ve0) /* { dg-error "invalid use of" } */ 59 60 extern int ve1; 61 #pragma acc declare copyout(ve1) /* { dg-error "invalid use of" } */ 62 63 extern int ve2; 64 #pragma acc declare present(ve2) /* { dg-error "invalid use of" } */ 65 66 extern int ve3; 67 #pragma acc declare present_or_copy(ve3) /* { dg-error "invalid use of" } */ 68 69 extern int ve4; 70 #pragma acc declare present_or_copyin(ve4) /* { dg-error "invalid use of" } */ 71 72 extern int ve5; 73 #pragma acc declare present_or_copyout(ve5) /* { dg-error "invalid use of" } */ 74 75 extern int ve6; 76 #pragma acc declare present_or_create(ve6) /* { dg-error "invalid use of" } */ 77 78 #pragma acc declare present (v9) /* { dg-error "invalid use of" } */ 79 } 80