https://gcc.gnu.org/bugzilla/show_bug.cgi?id=109989
--- Comment #4 from palmer at gcc dot gnu.org --- I left some cruft in that reproducer, it should have been volatile float f[2]; int x[2]; void func() { x[0] = -1; x[1] = 2; for (int i = 0; i < 1; ++i) f[i] = x[i]; } Not sure what's going on yet, but nothing jumps out in that bisected patch. I'm guessing we've just got something wrong with poly/scalar conversion, there's a bunch of implicit assumptions based around si/di conversions in our backend and I bet we're violating something there. That's all been a sticking point for a while and I think some of the Ventana guys were looking into cleaning it up, maybe Jeff has a better idea?