1/* { dg-do compile } */ 2/* { dg-options "-std=c99 -fopenmp" } */ 3 4extern void baz (int); 5 6void foo (int j, int k) 7{ 8 int i; 9 10 /* Valid loops. */ 11 #pragma omp for 12 for (i = 0; i < 10; i++) 13 baz (i); 14 15 #pragma omp for 16 for (i = j; i <= 10; i+=4) 17 baz (i); 18 19 #pragma omp for 20 for (i = j; i > 0; i = i - 1) 21 baz (j); 22 23 #pragma omp for 24 for (i = j; i >= k; i--) 25 baz (i); 26 27 #pragma omp for 28 for (int l = j; l < 10; l++) 29 baz (l); 30 31 /* Malformed parallel loops. */ 32 #pragma omp for 33 i = 0; /* { dg-error "for statement expected" } */ 34 for ( ; i < 10; ) 35 { 36 baz (i); 37 i++; 38 } 39 40 #pragma omp for 41 for (i = 0; ; i--) /* { dg-error "missing controlling predicate" } */ 42 { 43 if (i >= 10) 44 break; /* { dg-error "break" } */ 45 baz (i); 46 } 47 48 #pragma omp for 49 for (i = 0; 50 i < 10 && j > 4; /* { dg-error "invalid controlling predicate" } */ 51 i-=3) 52 baz (i); 53 54 #pragma omp for 55 for (i = 0; 56 i < 10; 57 i-=3, j+=2) /* { dg-error "invalid increment expression" } */ 58 baz (i); 59 60 int m = 0; 61 #pragma omp for 62 for (; m < 10; m++) /* { dg-error "expected" } */ 63 baz (m); 64 65 m = 0; 66 #pragma omp for 67 for (int n = 0; m < 10; m++) /* { dg-error "invalid controlling predicate|invalid increment expression" } */ 68 baz (m); 69 70 #pragma omp for 71 for (m = 0; m < 10; i++) /* { dg-error "invalid increment expression" } */ 72 baz (m); 73} 74