https://gcc.gnu.org/bugzilla/show_bug.cgi?id=91425
--- Comment #4 from Segher Boessenkool <segher at gcc dot gnu.org> --- (In reply to Richard Biener from comment #1) > where we end up with > > <bb 2> [local count: 1073741824]: > if (a_3(D) < b_4(D)) > goto <bb 4>; [50.00%] > else > goto <bb 3>; [50.00%] > > <bb 3> [local count: 536870913]: > _6 = a_3(D) > b_4(D); > > <bb 4> [local count: 1073741824]: > # prephitmp_8 = PHI <_6(3), 1(2)> > > instead of != compares. instead of <> compares (LTGT). With -ffast-math we should get the NE as you say, and that works fine.