/* { dg-do compile } */ /* { dg-options "-O2 -ftree-loop-linear" } */ /* { dg-require-effective-target size32plus } */ int foo(int *p, int n) { int i, j, k = 0; /* This is a reduction: there is a scalar dependence that cannot be removed by rewriting IVs. This code cannot and should not be transformed into a perfect loop. */ for (i = 0; i < 2; ++i, p += n) for (j = 0; j < 2; ++j) k += p[j]; return k; }