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

--- Comment #7 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
Note with my patch for PR 101805, we are able to get the scalar version of this
function to:
        xorl    %eax, %eax
        testl   %edx, %edx
        sete    %al
        orl     %esi, %eax
        ret

  _23 = kk_13(D) == 0;
  _18 = (int) _23;
  of_33 = of_10(D) | _18;
  return of_33;

This is because MAX<ea!=-1, ea!=-2> (ea != -1 | ea != -2) will always be 1.
ICC, clang nor MSVC is able to figure this out either.

Reply via email to