https://gcc.gnu.org/bugzilla/show_bug.cgi?id=97678
--- Comment #2 from Richard Biener <rguenth at gcc dot gnu.org> --- On x86_64 the initialization loop is miscompiled. int main () { unsigned int i = 0; signed char a[155 * 2]; unsigned short b[155 * 2]; for (i = 0; i < 155; i++) { a[i * 2] = i * 2 + i % 3; a[i * 2 + 1] = i * 3 + i % 4; b[i * 2] = i * 7 + i / 5; b[i * 2 + 1] = i * 8 + i / 6; } for (i = 0; i < 155; ++i) if (a[i*2] != (signed char)(i*2 + i%3) || a[i*2+1] != (signed char)(i*3 + i%4) || b[i*2] != (unsigned short)(i*7 + i/5) || b[i*2+1] != (unsigned short)(i*8 + i/6)) abort (); return 0; }