mirror of
git://gcc.gnu.org/git/gcc.git
synced 2025-01-11 13:55:19 +08:00
fixed-bit.c (SATFRACT): Only declare / set min_low, min_high if TO_MODE_UNSIGNED == 0.
* fixed-bit.c (SATFRACT) <FROM_TYPE=1, TO_TYPE=4>: Only declare / set min_low, min_high if TO_MODE_UNSIGNED == 0. (SATFRACT) <FROM_TYPE=TO_TYPE=4>: Only declare / set min_low, min_high if FROM_MODE_UNSIGNED == 0 and TO_MODE_UNSIGNED == 0. From-SVN: r195141
This commit is contained in:
parent
d471dece67
commit
3ffc195810
@ -1,3 +1,10 @@
|
||||
2013-01-14 Georg-Johann Lay <avr@gjlay.de>
|
||||
|
||||
* fixed-bit.c (SATFRACT) <FROM_TYPE=1, TO_TYPE=4>: Only
|
||||
declare / set min_low, min_high if TO_MODE_UNSIGNED == 0.
|
||||
(SATFRACT) <FROM_TYPE=TO_TYPE=4>: Only declare / set min_low,
|
||||
min_high if FROM_MODE_UNSIGNED == 0 and TO_MODE_UNSIGNED == 0.
|
||||
|
||||
2013-01-07 Mark Kettenis <kettenis@openbsd.org>
|
||||
|
||||
* config.host (i[34567]86-*-openbsd* and x86_64-*-openbsd*):
|
||||
|
@ -761,11 +761,12 @@ SATFRACT (FROM_FIXED_C_TYPE a)
|
||||
#if FROM_MODE_UNSIGNED == 0
|
||||
BIG_SINT_C_TYPE high, low;
|
||||
BIG_SINT_C_TYPE max_high, max_low;
|
||||
#if TO_MODE_UNSIGNED == 0
|
||||
BIG_SINT_C_TYPE min_high, min_low;
|
||||
#endif
|
||||
#else
|
||||
BIG_UINT_C_TYPE high, low;
|
||||
BIG_UINT_C_TYPE max_high, max_low;
|
||||
BIG_UINT_C_TYPE min_high, min_low;
|
||||
#endif
|
||||
#if TO_FBITS > FROM_FBITS
|
||||
BIG_UINT_C_TYPE utemp;
|
||||
@ -812,13 +813,12 @@ SATFRACT (FROM_FIXED_C_TYPE a)
|
||||
#endif
|
||||
|
||||
#if TO_MODE_UNSIGNED == 0
|
||||
min_high = -1;
|
||||
stemp = (BIG_SINT_C_TYPE)1 << (BIG_WIDTH - 1);
|
||||
stemp = stemp >> (BIG_WIDTH - 1 - TO_I_F_BITS);
|
||||
#if FROM_MODE_UNSIGNED == 0
|
||||
min_high = -1;
|
||||
min_low = stemp;
|
||||
#else
|
||||
min_high = 0;
|
||||
min_low = 0;
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#if FROM_MODE_UNSIGNED == 0 && TO_MODE_UNSIGNED == 0
|
||||
@ -957,7 +957,7 @@ FRACT (FROM_INT_C_TYPE a)
|
||||
#endif /* defined(FRACT) && FROM_TYPE == 1 && TO_TYPE == 4 */
|
||||
|
||||
/* Signed int -> Fixed with saturation. */
|
||||
#if defined(SATFRACT) && defined(L_satfract) &&FROM_TYPE == 1 && TO_TYPE == 4
|
||||
#if defined(SATFRACT) && defined(L_satfract) && FROM_TYPE == 1 && TO_TYPE == 4
|
||||
TO_FIXED_C_TYPE
|
||||
SATFRACT (FROM_INT_C_TYPE a)
|
||||
{
|
||||
@ -966,8 +966,8 @@ SATFRACT (FROM_INT_C_TYPE a)
|
||||
FROM_INT_C_TYPE x = a;
|
||||
BIG_SINT_C_TYPE high, low;
|
||||
BIG_SINT_C_TYPE max_high, max_low;
|
||||
BIG_SINT_C_TYPE min_high, min_low;
|
||||
#if TO_MODE_UNSIGNED == 0
|
||||
BIG_SINT_C_TYPE min_high, min_low;
|
||||
BIG_SINT_C_TYPE stemp;
|
||||
#endif
|
||||
#if BIG_WIDTH != TO_FBITS
|
||||
@ -1008,12 +1008,7 @@ SATFRACT (FROM_INT_C_TYPE a)
|
||||
stemp = (BIG_SINT_C_TYPE)1 << (BIG_WIDTH - 1);
|
||||
stemp = stemp >> (BIG_WIDTH - 1 - TO_I_F_BITS);
|
||||
min_low = stemp;
|
||||
#else
|
||||
min_high = 0;
|
||||
min_low = 0;
|
||||
#endif
|
||||
|
||||
#if TO_MODE_UNSIGNED == 0
|
||||
/* Signed -> Signed. */
|
||||
if ((BIG_SINT_C_TYPE) high > (BIG_SINT_C_TYPE) max_high
|
||||
|| ((BIG_SINT_C_TYPE) high == (BIG_SINT_C_TYPE) max_high
|
||||
|
Loading…
Reference in New Issue
Block a user