https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83580
Jakub Jelinek <jakub at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |jakub at gcc dot gnu.org --- Comment #2 from Jakub Jelinek <jakub at gcc dot gnu.org> --- This goes wrong during pcom: <bb 9> [local count: 136902083]: + _26 = (unsigned char) t_29; + _25 = -_26; + _34 = (signed char) _25; + _33 = (sizetype) _34; + _53 = _33 * 4; + _54 = &a + _53; + a_I_lsm0.9_55 = MEM[(int *)_54 + 520B]; <bb 3> [local count: 912680551]: # i_52 = PHI <0(9), i_32(10)> _2 = (unsigned char) t_29; _3 = 130 - _2; _4 = (signed char) _3; _5 = (int) _4; - t_31 = a[_5]; + t_31 = a_I_lsm0.9_55; is of course invalid, because it performs the + 130 addition in sizetype rather than before the (signed char) cast.