https://gcc.gnu.org/bugzilla/show_bug.cgi?id=122844

--- Comment #7 from Richard Biener <rguenth at gcc dot gnu.org> ---
# ab_50 = PHI <0(19), ab_24(23)>
# a_lsm.10_48 = PHI <a_lsm.10_52(19), _30(23)>
ac_5 = (int) m.3_4;
ad_31 = (long long unsigned int) m.3_4;
_45 = (long long unsigned int) ac_5;
_44 = MIN_EXPR <ad_31, _45>;
ad_43 = (int) _44;
_30 = MIN_EXPR <ad_43, a_lsm.10_48>;
ab_24 = ab_50 + 1;
if (k.1_2 >= ab_50)
  goto <bb 23>; [89.00%]
else
  goto <bb 65>; [11.00%]

so we're turning the a_lsm.10_48 reduction into a reduction chain,
combining the patterned MIN_EXPR.  But we're stripping a sign conversion,
which isn't correct for MIN/MAX_EXPR.

Reply via email to