Remove a redundant call to `ieee754_setandtestcx' in `ieee754sp_cmp' and `ieee754dp_cmp'. The IEEE 754 exception requested will have already been set by a call to `ieee754_setcx' immediately above, because `sig' has to be non-zero to reach here, and the comparison result returned will be 0 regardless of the result from the call. Simplify the return expression remaining. All this reducing the size of code by 16 and 12 instructions or 64 and 48 bytes respectively. Signed-off-by: Maciej W. Rozycki <macro@xxxxxxxxxxxxxx> --- linux-mips-emu-cmp.diff Index: linux/arch/mips/math-emu/dp_cmp.c =================================================================== --- linux.orig/arch/mips/math-emu/dp_cmp.c 2015-04-03 13:23:31.663867000 +0100 +++ linux/arch/mips/math-emu/dp_cmp.c 2015-04-03 13:23:37.279924000 +0100 @@ -39,13 +39,7 @@ int ieee754dp_cmp(union ieee754dp x, uni if (sig || xc == IEEE754_CLASS_SNAN || yc == IEEE754_CLASS_SNAN) ieee754_setcx(IEEE754_INVALID_OPERATION); - if (cmp & IEEE754_CUN) - return 1; - if (cmp & (IEEE754_CLT | IEEE754_CGT)) { - if (sig && ieee754_setandtestcx(IEEE754_INVALID_OPERATION)) - return 0; - } - return 0; + return (cmp & IEEE754_CUN) != 0; } else { vx = x.bits; vy = y.bits; Index: linux/arch/mips/math-emu/sp_cmp.c =================================================================== --- linux.orig/arch/mips/math-emu/sp_cmp.c 2015-04-03 13:23:31.680870000 +0100 +++ linux/arch/mips/math-emu/sp_cmp.c 2015-04-03 13:23:37.281921000 +0100 @@ -39,13 +39,7 @@ int ieee754sp_cmp(union ieee754sp x, uni if (sig || xc == IEEE754_CLASS_SNAN || yc == IEEE754_CLASS_SNAN) ieee754_setcx(IEEE754_INVALID_OPERATION); - if (cmp & IEEE754_CUN) - return 1; - if (cmp & (IEEE754_CLT | IEEE754_CGT)) { - if (sig && ieee754_setandtestcx(IEEE754_INVALID_OPERATION)) - return 0; - } - return 0; + return (cmp & IEEE754_CUN) != 0; } else { vx = x.bits; vy = y.bits;