https://gcc.gnu.org/bugzilla/show_bug.cgi?id=107699
--- Comment #15 from Andrew Pinski <pinskia at gcc dot gnu.org> --- Another missed optimization: long unsigned int _8; ... _1 = _8 * 4; if (_1 != 0) goto <bb 3>; [70.00%] else goto <bb 88>; [30.00%] <bb 3> [local count: 751619365]: _2 = &data._M_elems + _1; _304 = (long int) _1; _13 = _304 /[ex] 4; __n.0_14 = (long unsigned int) _13; if (__n.0_14 == 0) goto <bb 4>; [21.72%] else goto <bb 5>; [78.28%] ``` __n.0_14 is just _1. I am not sure if this will remove the warning though.