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...