http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52678
--- Comment #3 from Richard Guenther <rguenth at gcc dot gnu.org> 2012-03-23 09:29:07 UTC --- The issue is that for an induction variable i in long i; for (i = 0; i < 15; i = (int) i + 1) ; we know its evolution if we know the number of iterations which we know because we know its initial value. For the epilogue loop though we then see (after deciding to vectorize) for (; i < n; i = (int) i + 1) ; where we neither see the lower nor upper bound and due to the truncation we cannot analyze its evolution anymore. The issue is, of course, that we only need the evolution part and that this evolution part does not change from the initial scalar loop, so we could just use that which we could analyze easily. But we choose to re-analyze the epilogue loop :(