https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83580
--- Comment #8 from Richard Biener <rguenth at gcc dot gnu.org> --- OK, so this is all a bit fishy. We're basically looking at (ssizetype)exp splitting exp recursively into X + CST where we keep the overall CST in ssizetype. For plus/minus we associate for mult we distribute. Given we do all this in effective ssizetype we may not cross a conversion boundary to unsigned, but STRIP_NOPS just does that. It might be the very outermost STRIP_NOPS is ok (not 100% sure), but at least I'm testing the fallout of removing the STRIP_NOPS from split_constant_offset.