http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52678
--- Comment #4 from Richard Guenther <rguenth at gcc dot gnu.org> 2012-03-23 10:19:53 UTC --- Created attachment 26966 --> http://gcc.gnu.org/bugzilla/attachment.cgi?id=26966 patch No, in fact, generating the _prologue_ loop adjusts the original PHI node from openad_symbol_188_2 = PHI <0(2), openad_symbol_188_42(4)> to openad_symbol_188_2 = PHI <openad_symbol_188_105(17), openad_symbol_188_42(4)> and we _do_ analyze that original loop PHI. But now fail to. One solution would be to delay peeling for the prologue loop after we peeled the epilogue loop - but that has quite some fallout. Another solution would be to save the scalar evolution result, but we explicitely free it after the first peeling (because obviously while the evolution part of openad_symbol_188_2 is still correct, it's initial value is not). So the correct thing seems to be to preserve the evolution part and simply take the initial value from the PHI operand.