https://gcc.gnu.org/bugzilla/show_bug.cgi?id=120904
--- Comment #1 from Andrew Pinski <pinskia at gcc dot gnu.org> --- I am not 100% this has valid assumptions here at all. Final .optimize: _4 = MEM[(const int * *)&s]; _5 = MEM[(long unsigned int *)&s + 8B]; _12 = _5 * 4; _13 = _4 + _12; GCC does not know that _5*4 does not wrap ....