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>`.

Reply via email to