Hi, this testcase tests that we are about to bound number of iterations of for (k = 3; k < NA_1; k++) for (i = 3; i < MA_1; i++) for (j = 3; j < MB_1; j++) { t = T[i][j]; T[i][j] = t+2+A[i][k]*B[j][k]; }
based on #define MB 100 #define NA 450 #define MA 400 int T[MA][MB],A[MA][NA],B[MB][NA]; Well, we used to be able to, but by bug. The problem is that we are not able to hoist the loop headers prior the loop and thus we do not have perfect nest and we do not know if the body is always executed on an iteration of the outer loops. This patch fixes the testcase by hoisting by hand. I would bet I saw loop-ch.c patch doing this, but I do not see it in mainline? Comitted. Honza *** pr499602.c 2012-11-05 12:18:21.771215185 +0100 --- pr49960.c 2012-11-05 12:17:43.696420662 +0100 *************** *** 11,16 **** --- 11,21 ---- { int i,j, t,k; + /* At the moment we are not able to hoist the loop headers out of the loop + nest. */ + if (MA_1 < 4 || NA_1 < 4 || MB_1 < 4) + return; + /* The outer most loop is not parallel because for different k's there is write-write dependency for T[i][j]. */