https://gcc.gnu.org/bugzilla/show_bug.cgi?id=110015
--- Comment #5 from Andrew Pinski <pinskia at gcc dot gnu.org> --- After fixing PR 112324 (and a secondary patch to phiopt to do factor_out_conditional_operation for all phi nodes rather than just a single one) we still miss the abs detection: _34 = tmp_24 < 0; _55 = (unsigned int) tmp_24; _56 = -_55; _1 = (intD.6) _56; _30 = _1 | -2147483648; iftmp.0_26 = (unsigned intD.9) _30; # .MEM_27 = VDEF <.MEM_46> # USE = anything # CLB = anything .MASK_STORE (datap_43, 8B, _34, iftmp.0_26); # RANGE [irange] int [0, +INF] _25 = _34 ? _1 : tmp_24; basically `a < 0 ? (int)-(unsigned)a : a` needs to detected to be `(int)ABSU_EXPR<a>`.