/* { dg-do compile } */ /* { dg-options "-fcilkplus" } */ int main (void) { int array[10], array2[10][10]; int x, ii, jj ; switch (array[:]) { /* { dg-error "cannot be used as a condition for switch statement" } */ case 1: x = 5; break; case 2: x = 2; break; default: x = 9; } switch (array2[:][:]) { /* { dg-error "cannot be used as a condition for switch statement" } */ case 1: x = 5; break; case 2: x = 2; break; default: x = 9; } switch (array[:] + x) { /* { dg-error "cannot be used as a condition for switch statement" } */ case 1: x = 5; break; case 2: x = 2; break; default: x = 9; } switch (array2[:][1:x:4] + x) { /* { dg-error "cannot be used as a condition for switch statement" } */ case 1: x = 5; break; case 2: x = 2; break; default: x = 9; } for (ii = 0; ii < array[:]; ii++) /* { dg-error "cannot be used in a condition for a for-loop" } */ { x = 2; } for (ii = 0; ii < array2[:][:]; ii++) /* { dg-error "cannot be used in a condition for a for-loop" } */ { x = 3; } for (; array2[:][:] < 2;) /* { dg-error "cannot be used in a condition for a for-loop" } */ x = 4; while (array2[:][:]) /* { dg-error "cannot be used as a condition for while statement" } */ x = 3; while (array[1:1:1]) /* { dg-error "cannot be used as a condition for while statement" } */ x = 1; while (ii != array2[1:x:3][1:2:1]) /* { dg-error "cannot be used as a condition for while statement" } */ x = 2; do { /* { dg-error "cannot be used as a condition for a do-while statement" "" { target c } } */ x = 3; } while (ii != array2[:][:]); /* { dg-error "cannot be used as a condition for a do-while statement" "" { target c++ } } */ do { /* { dg-error "cannot be used as a condition for a do-while statement" "" { target c } } */ x = 2; } while (ii != (x + array2[:][1:x:2]) + 2); /* { dg-error "cannot be used as a condition for a do-while statement" "" { target c++ } } */ do { x += 3; if (x == 5) return array2[:][:]; /* { dg-error "array notation expression cannot be used as a return value" } */ } while (ii != 0); for (ii = 0; ii < 10; ii++) if (ii % 2) return array[1:x:ii]; /* { dg-error "array notation expression cannot be used as a return value" } */ for (ii = 0; ii < x; ii++) if (ii) return array2[:][:]; /* { dg-error "array notation expression cannot be used as a return value" } */ for (array[:] = 0; ii < x; ii++) /* This should be OK. */ x= 2; for (ii = 0; ii < 10; array[:]++) /* This is OK. */ x = 5; for (jj = 0; jj < 10; array2[:][:]++) /* This is OK. */ x = 3; for (jj = 0; jj < 10; array2[:][1:x:4]++, jj++) /* This is OK. */ x = 3; return x; }