From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([140.186.70.92]:57366) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1RmrO6-00064T-3g for qemu-devel@nongnu.org; Mon, 16 Jan 2012 13:34:39 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1RmrO0-0005KA-9X for qemu-devel@nongnu.org; Mon, 16 Jan 2012 13:34:34 -0500 Received: from mnementh.archaic.org.uk ([81.2.115.146]:39838) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1RmrNz-0005JZ-U6 for qemu-devel@nongnu.org; Mon, 16 Jan 2012 13:34:28 -0500 From: Peter Maydell Date: Mon, 16 Jan 2012 18:34:17 +0000 Message-Id: <1326738858-19992-3-git-send-email-peter.maydell@linaro.org> In-Reply-To: <1326738858-19992-1-git-send-email-peter.maydell@linaro.org> References: <1326738858-19992-1-git-send-email-peter.maydell@linaro.org> Subject: [Qemu-devel] [PATCH 2/3] softfloat: float*_to_int32_round_to_zero: don't assume int32 is 32 bits List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: =?UTF-8?q?Andreas=20F=C3=A4rber?= , patches@linaro.org Code in the float64_to_int32_round_to_zero() function was assuming that int32 would not be wider than 32 bits; this meant it might not correctly detect the overflow case. We take the simple approach of using int32_t. Also fix equivalent issues in the functions for other float sizes. Signed-off-by: Peter Maydell --- fpu/softfloat.c | 8 ++++---- 1 files changed, 4 insertions(+), 4 deletions(-) diff --git a/fpu/softfloat.c b/fpu/softfloat.c index 6dbcb1b..08db899 100644 --- a/fpu/softfloat.c +++ b/fpu/softfloat.c @@ -1378,7 +1378,7 @@ int32 float32_to_int32_round_to_zero( float32 a STATUS_PARAM ) flag aSign; int16 aExp, shiftCount; uint32_t aSig; - int32 z; + int32_t z; a = float32_squash_input_denormal(a STATUS_VAR); aSig = extractFloat32Frac( a ); @@ -2762,7 +2762,7 @@ int32 float64_to_int32_round_to_zero( float64 a STATUS_PARAM ) flag aSign; int16 aExp, shiftCount; uint64_t aSig, savedASig; - int32 z; + int32_t z; a = float64_squash_input_denormal(a STATUS_VAR); aSig = extractFloat64Frac( a ); @@ -4248,7 +4248,7 @@ int32 floatx80_to_int32_round_to_zero( floatx80 a STATUS_PARAM ) flag aSign; int32 aExp, shiftCount; uint64_t aSig, savedASig; - int32 z; + int32_t z; aSig = extractFloatx80Frac( a ); aExp = extractFloatx80Exp( a ); @@ -5277,7 +5277,7 @@ int32 float128_to_int32_round_to_zero( float128 a STATUS_PARAM ) flag aSign; int32 aExp, shiftCount; uint64_t aSig0, aSig1, savedASig; - int32 z; + int32_t z; aSig1 = extractFloat128Frac1( a ); aSig0 = extractFloat128Frac0( a ); -- 1.7.1