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

--- Comment #2 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
Reduced testcase:
int
foo (int x, int y)
{
  int v;
  if (x == 0)
    v = 0;
  else if (x > 0)
    v = 1;
  else
    v = -1;
  return v == y;
}

Seems -march=i486 and -march=i586 are TARGET_ZERO_EXTEND_WITH_AND targets and
the movzbl emitted doesn't work there.
Guess either I can use the UNSPEC setcc that is used for the jp float
comparison case, or simply make the spaceship int patterns use
!TARGET_ZERO_EXTEND_WITH_AND condition and for floating point always emits the
branches.  Who cares about i486 or i586 code performance these days...

Reply via email to