https://gcc.gnu.org/bugzilla/show_bug.cgi?id=102949
--- Comment #2 from Richard Biener <rguenth at gcc dot gnu.org> --- Hm, I tried --target=sparcv8-sun-solaris2.11 but that seems to fail to reproduce any vectorization with -O2 -ftree-vectorize. If I add -mvis I get something that could resemble the code you quote: main1: save %sp, -104, %sp cmp %i0, 0 ble,pn %icc, .LL6 mov 30, %g1 sethi %hi(.LLC0), %g3 sethi %hi(uc), %g1 sll %i0, 4, %i0 or %g1, %lo(uc), %g1 sethi %hi(ub), %g2 ldd [%g3+%lo(.LLC0)], %f12 or %g2, %lo(ub), %g2 sethi %hi(.LLC1), %g3 add %i0, %g1, %i0 ldd [%g3+%lo(.LLC1)], %f14 .LL3: ldd [%g1], %f18 ldd [%g1+8], %f16 ldd [%g2], %f10 ldd [%g2+8], %f8 fpsub32 %f10, %f18, %f10 fpsub32 %f8, %f16, %f8 add %g1, 16, %g1 fpadd32 %f14, %f10, %f14 fpadd32 %f12, %f8, %f12 cmp %i0, %g1 bne,pt %icc, .LL3 add %g2, 16, %g2 here it should be that %g1 is '&uc[0]' initially and maintain alignment. But somehow we end up with: .section ".data" .align 4 .type uc, #object .size uc, 64 uc: .long 0 .long 1 .long 2 .long 3 so 'uc' is not properly aligned even though the vectorizer thinks it forces that. And the rev in question likely caused that to misbehave.