1 /* { dg-do compile } */ 2 /* { dg-options "-O2 -ftree-loop-linear" } */ 3 /* { dg-require-effective-target size32plus } */ 4 foo()5int foo() 6 { 7 int x[2][2], y[2]; 8 int i, n, s; 9 10 /* This is a reduction: there is a scalar dependence that cannot be 11 removed by rewriting IVs. This code cannot and should not be 12 transformed into a perfect loop. */ 13 for (n = 0; n < 2; n++) 14 { 15 s = 0; 16 for (i = 0; i < 2; i++) 17 s += x[n][i]*y[i]; 18 s += 1; 19 } 20 21 return s; 22 } 23