https://gcc.gnu.org/bugzilla/show_bug.cgi?id=114040
--- Comment #2 from Andrew Pinski <pinskia at gcc dot gnu.org> --- ` -fdisable-tree-evrp -fdisable-tree-vrp1` also fixes it. EVRP and VRP1 changes: _3 = IMAGPART_EXPR <_8>; _4 = (_Bool) _3; _5 = (unsigned _BitInt(8671)) _4; into _7 = .SUB_OVERFLOW (_2, 0); _3 = IMAGPART_EXPR <_7>; _4 = (unsigned _BitInt(8671)) _3; Which looks fine. Then bitlower looks to go wrong.