http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50037
--- Comment #5 from Richard Guenther <rguenth at gcc dot gnu.org> 2011-08-11 11:21:34 UTC --- (In reply to comment #4) > (In reply to comment #3) > > Using > > > > int foo (int n, int *addr) > > { > > int count, sum; > > for ( count = n & 0x3; count >= 0; count--, addr++ ) > > sum += *addr; > > return sum; > > } > > > > it works. > > Not for me. It's still unrolled by 7. Ah, but something cleans up the jump sequence afterwards. At least. Doesn't happen for the original testcase either.