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.
