https://gcc.gnu.org/bugzilla/show_bug.cgi?id=109184
--- Comment #10 from Richard Biener <rguenth at gcc dot gnu.org> --- Somewhat more reduced: typedef __UINT64_TYPE__ uint64_t; static uint64_t g_1731[7] = {0xF75EE82FC4736923LL, 0, 0xF75EE82FC4736923LL, 0, 0xF75EE82FC4736923LL, 0, 0xF75EE82FC4736923LL}; void __attribute__((noipa)) foo () { uint64_t l_1930[5] = { 0x5e44d2fed3bca5f2, 0x5e44d2fed3bca5f2, 0x5e44d2fed3bca5f2, 0x5e44d2fed3bca5f2, 0x5e44d2fed3bca5f2 }; for (int i = 0; i < 15; ++i) for (int j = 4; (j >= 1); j -= 1) #pragma GCC unroll 0 for (int k = 0; (k <= 4); k += 1) g_1731[(j + 1)] &= (0x26L & (--l_1930[k])); } int main() { foo (); /* f75ee82fc4736923 0 2 0 0 0 f75ee82fc4736923 */ if (g_1731[0] != 0xF75EE82FC4736923LL || g_1731[2] != 2 || g_1731[4] != 0 || g_1731[6] != 0xF75EE82FC4736923LL) __builtin_abort (); return 0; }