combine.c (force_to_mode, case PLUS): Use sign extended mask when masking the low bits out of a constant.

* combine.c (force_to_mode, case PLUS): Use sign extended mask
        when masking the low bits out of a constant.

From-SVN: r25964
This commit is contained in:
Donn Terry 1999-03-25 00:48:16 +00:00 committed by Jeff Law
parent 5e7d21e916
commit 835c8e044b
2 changed files with 14 additions and 8 deletions

View File

@ -1,3 +1,8 @@
Thu Mar 25 01:15:33 1999 Donn Terry <donn@interix.com>
* combine.c (force_to_mode, case PLUS): Use sign extended mask
when masking the low bits out of a constant.
Tue Mar 23 15:45:25 1999 Richard Earnshaw (rearnsha@arm.com)
Jeff Law <law@cygnus.com>

View File

@ -6415,20 +6415,21 @@ force_to_mode (x, mode, mask, reg, just_select)
unsigned HOST_WIDE_INT sp_mask = GET_MODE_MASK (mode);
sp_mask &= ~ (sp_alignment - 1);
if ((sp_mask & ~ mask) == 0
&& ((INTVAL (XEXP (x, 1)) - STACK_BIAS) & ~ mask) != 0)
if ((sp_mask & ~ smask) == 0
&& ((INTVAL (XEXP (x, 1)) - STACK_BIAS) & ~ smask) != 0)
return force_to_mode (plus_constant (XEXP (x, 0),
((INTVAL (XEXP (x, 1)) -
STACK_BIAS) & mask)
STACK_BIAS) & smask)
+ STACK_BIAS),
mode, mask, reg, next_select);
mode, smask, reg, next_select);
}
#endif
if ((nonzero_bits (XEXP (x, 0), mode) & ~ mask) == 0
&& (INTVAL (XEXP (x, 1)) & ~ mask) != 0)
if ((nonzero_bits (XEXP (x, 0), mode) & ~ smask) == 0
&& (INTVAL (XEXP (x, 1)) & ~ smask) != 0)
return force_to_mode (plus_constant (XEXP (x, 0),
INTVAL (XEXP (x, 1)) & mask),
mode, mask, reg, next_select);
(INTVAL (XEXP (x, 1))
& smask)),
mode, smask, reg, next_select);
}
}