test1()1 int test1()
2 {
3 int i, j, k, b[10];
4 int a[30];
5 double d;
6 float r;
7 i = 0;
8 #pragma acc loop
9 while(1) /* { dg-error "for statement expected" } */
10 {
11 if (i > 0) break;
12 i = i + 1;
13 }
14 i = 0;
15 #pragma acc loop
16 for(;;) /* { dg-error "expected iteration declaration or initialization" } */
17 {
18 if (i > 0) break; /* { dg-error "break statement used" } */
19 i = i + 1;
20 }
21 i = 0;
22 #pragma acc loop
23 do /* { dg-error "for statement expected" } */
24 {
25 i = i + 1;
26 }
27 while (i < 4);
28 #pragma acc loop
29 while (i < 8) /* { dg-error "for statement expected" } */
30 {
31 i = i + 1;
32 }
33 #pragma acc loop
34 for (d = 1; d < 30; d+= 6) /* { dg-error "invalid type for iteration variable" } */
35 {
36 i = d;
37 a[i] = 1;
38 }
39 #pragma acc loop /* { dg-error "loop directive must be associated with an OpenACC compute region" } */
40 for (i = 1; i < 30; i++ )
41 if (i == 16) break; /* { dg-error "break statement used" } */
42
43 /* different types of for loop are allowed */
44 #pragma acc loop /* { dg-error "loop directive must be associated with an OpenACC compute region" } */
45 for (i = 1; i < 10; i++)
46 {
47 }
48 #pragma acc loop /* { dg-error "loop directive must be associated with an OpenACC compute region" } */
49 for (i = 1; i < 10; i+=2)
50 {
51 a[i] = i;
52 }
53
54 /* after loop directive must be loop */
55 #pragma acc loop
56 a[1] = 1; /* { dg-error "for statement expected" } */
57 for (i = 1; i < 10; i++)
58 ;
59 /* combined directives may be used*/
60 #pragma acc parallel loop
61 for(i = 1; i < 10; i++)
62 {
63 }
64 #pragma acc kernels loop
65 for(i = 1; i < 10; i++)
66 {
67 }
68 return 0;
69 }
70
71 // PR64765
PR64765(float * f,double * r)72 void PR64765(float *f, double *r) {
73 int i;
74 #pragma acc kernels loop create(f) copy(r)
75 for(i = 64; i < 76; i += 5) {}
76 }
77