http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58484
--- Comment #3 from Richard Biener <rguenth at gcc dot gnu.org> --- Hm, so are we expecting that instantiate_scev_r through static tree instantiate_scev_binary (basic_block instantiate_below, struct loop *evolution_loop, struct loop *inner_loop, tree chrec, enum tree_code code, tree type, tree c0, tree c1, bool fold_conversions, int size_expr) { tree op1; tree op0 = instantiate_scev_r (instantiate_below, evolution_loop, inner_loop, c0, fold_conversions, size_expr); with evolution_loop == 2 for (integer(kind=4)) ((unsigned int) ma_28 + 4294967295) returns {0, +, 1}_1, thus an evolution in loop 1 which is an outer loop of 2? Ah, now that the global cache is in effect it's no longer true that instantiated_below remains the same ... :/