1 /* { dg-do compile } */ 2 3 void foo(void)4foo (void) 5 { 6 const int N = 32; 7 float x[N], y[N]; 8 int flag = 0; 9 10 if (flag) 11 #pragma acc update host (x[0:N]) /* { dg-error "may only be used in compound statements" } */ 12 flag = 1; 13 14 while (flag) 15 #pragma acc update host (x[0:N]) /* { dg-error "may only be used in compound statements" } */ 16 flag = 2; 17 18 #pragma acc enter data create (x[0:N]) 19 { 20 if (flag) 21 #pragma acc update host (x[0:N]) /* { dg-error "may only be used in compound statements" } */ 22 flag = 1; 23 } 24 25 if (flag) 26 while (flag) 27 #pragma acc update host (x[0:N]) /* { dg-error "may only be used in compound statements" } */ 28 flag = 2; 29 30 if (flag) 31 #pragma acc wait /* { dg-error "may only be used in compound statements" } */ 32 flag = 1; 33 34 while (flag) 35 #pragma acc wait /* { dg-error "may only be used in compound statements" } */ 36 flag = 2; 37 38 #pragma acc enter data create (x[0:N]) 39 { 40 if (flag) 41 #pragma acc wait /* { dg-error "may only be used in compound statements" } */ 42 flag = 1; 43 } 44 45 if (flag) 46 #pragma acc enter data create (x[0:N]) /* { dg-error "may only be used in compound statements" } */ 47 flag = 1; 48 49 while (flag) 50 #pragma acc enter data create (x[0:N]) /* { dg-error "may only be used in compound statements" } */ 51 flag = 2; 52 53 #pragma acc enter data create (x[0:N]) 54 { 55 if (flag) 56 #pragma acc enter data create (y[0:N]) /* { dg-error "may only be used in compound statements" } */ 57 flag = 1; 58 } 59 60 if (flag) 61 #pragma acc exit data delete (x[0:N]) /* { dg-error "may only be used in compound statements" } */ 62 flag = 1; 63 64 while (flag) 65 #pragma acc exit data delete (x[0:N]) /* { dg-error "may only be used in compound statements" } */ 66 flag = 2; 67 68 #pragma acc enter data create (x[0:N]) 69 { 70 if (flag) 71 #pragma acc exit data delete (x[0:N]) /* { dg-error "may only be used in compound statements" } */ 72 flag = 1; 73 } 74 } 75