https://gcc.gnu.org/bugzilla/show_bug.cgi?id=118064
--- Comment #2 from Andrew Pinski <pinskia at gcc dot gnu.org> --- Confirmed, this is another one which misses the truncation: From: b.0_1 = b; _2 = b.0_1 ^ 1; b = _2; ... _5 = (char) _2; if (_5 != 1) goto <bb 7>; [50.00%] else goto <bb 5>; [50.00%] <bb 5> [local count: 238907556]: if (b.0_1 != 1) goto <bb 7>; [66.00%] else goto <bb 6>; [34.00%] to: _4 = b; _22 = (unsigned int) _4; b.0_1 = b; _2 = b.0_1 ^ 1; b = _2; _5 = (char) _2; if (_22 != 1) goto <bb 6>; [83.00%] else goto <bb 5>; [17.00%]