https://gcc.gnu.org/bugzilla/show_bug.cgi?id=124180
--- Comment #9 from Richard Biener <rguenth at gcc dot gnu.org> --- (In reply to Richard Biener from comment #8) ... > > v_35 = _5 + 5.0e-1; > if (v_35 > 6.5535e+4) > goto <bb 8>; [50.00%] > else > goto <bb 7>; [50.00%] > > <bb 7> [local count: 477815112]: > _36 = v_35 < 0.0; > _37 = _36 ? 0.0 : v_35; > > <bb 8> [local count: 955630224]: > # iftmp.4_38 = PHI <6.5535e+4(6), _37(7)> > _39 = (short unsigned int) iftmp.4_38; > > PRE would anticipate the float to int conversion on the constant edge. > I think phiopt has the issue that the source, as written, at least > has the (min) > (a) FP comparison conditional, and that also raises > FP exceptions. Of course with context, v_35 > 6.5535e+4 already raised INVALID then, so raising INVALID again on v_35 < 0.0 might be considered OK (with alternate exception mechanism this might be observable though).
