https://gcc.gnu.org/bugzilla/show_bug.cgi?id=117599
--- Comment #9 from Xi Ruoyao <xry111 at gcc dot gnu.org> --- We have <unnamed-signed:63> _48; but _48 = VIEW_CONVERT_EXPR<unsigned long[10]>(b575[i_6])[8]; _49 = (unsigned long) _48; Thus a signedness mismatch between _48 and the type of VIEW_CONVERT_EXPR<unsigned long[10]>(b575[i_6])[8] triggers this. OTOH x86 has things like unsigned long _60; <unnamed-signed:63> _61; _60 = VIEW_CONVERT_EXPR<unsigned long[9]>(b575[i_6])[8]; _61 = (<unnamed-signed:63>) _60; Thus it seems we are missing a non-trivial type conversion here. The length difference of the unsigned long[] seems not relevant.