/* { dg-do compile } */ /* { dg-options "-O3 -Warray-bounds" } */ struct S { int a; int b; int c; int d; int e; float x[5]; float y[5]; // Comment these two lines out to float z[5 - 1]; // remove the warning }; void f(struct S *s, float a[], float **b, float c[]) { if ((s->b == 1) && (s->d > 0)) { for (int i = 0; i < s->a; i++) { if (a[i] != 0.0) { for (int j = 0; j < s->d - 1; j++) { if ((c[i] >= s->x[j]) && (c[i] <= s->x[j + 1])) { b[2*j][i] = s->x[j]; break; } } } } } }