https://gcc.gnu.org/bugzilla/show_bug.cgi?id=116896
--- Comment #9 from Jakub Jelinek <jakub at gcc dot gnu.org> --- So, I think this boils down on which one from int foo (int x, int y) { if (x < y) return -1; else if (x > y) return 1; else return 0; } int bar (int x, int y) { if (x == y) return 0; else if (x < y) return -1; else return 1; } int baz (int x, int y) { return (x > y) - (x < y); } generates best code on which architecture (and better in terms of -Os and/or performance). Looking at godbolt on various arches, the last is beneficial on various arches, including x86 (32-bit and 64-bit) and mips, the first maybe on aarch64 and powerpc*, etc.