https://gcc.gnu.org/bugzilla/show_bug.cgi?id=84466
--- Comment #4 from Richard Biener <rguenth at gcc dot gnu.org> --- So the issue is for (i = 0; i < N; i++) { y[i] = i; for (j = 0; j < N; j++) { if (j > 500) { x[i][j] = i + j + 3; y[j] = i*j + 10; ^^^ here we now verify that we can instantiate i*j + 10 at this point which is (int) {10, +, {0, +, 1}_3}_4 and that fails the graphite_can_represent_scev test because of case POLYNOMIAL_CHREC: /* Check for constant strides. With a non constant stride of 'n' we would have a value of 'iv * n'. Also check that the initial value can represented: for example 'n * m' cannot be represented. */ gcc_assert (loop_in_sese_p (get_loop (cfun, CHREC_VARIABLE (scev)), scop)); if (!evolution_function_right_is_integer_cst (scev) || !graphite_can_represent_init (scev)) return false; given CHREC_RIGHT is {0, +, 1}_3 and not an INTEGER_CST. I think with graphite_can_represent_scev I used the wrong tool (it is supposed to guard what extract_affine handles). Testing a patch.