https://gcc.gnu.org/bugzilla/show_bug.cgi?id=108583
--- Comment #9 from rsandifo at gcc dot gnu.org <rsandifo at gcc dot gnu.org> --- Are we sure this is a vectoriser vs. C vectors thing? The equivalent vectoriser test: void __attribute__((noipa)) f (unsigned *v) { for (int i = 0; i < 4; ++i) v[i] /= 0xffff; } int main (void) { unsigned v[] = { 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff }; f (v); for (unsigned i = 0; i < sizeof (v) / sizeof (v[0]); i++) if (v[i] != 0x00010001) __builtin_abort (); return 0; } fails in the same way for me (compiled at -O3).