diff options
author | Donn Terry <donn@interix.com> | 1999-03-25 00:48:16 +0000 |
---|---|---|
committer | Jeff Law <law@gcc.gnu.org> | 1999-03-24 17:48:16 -0700 |
commit | 835c8e044b0f98ee7497281389a60e661588c796 (patch) | |
tree | 062017b91fb65501bd9e8848abe4a28fb4ac5363 /gcc | |
parent | 5e7d21e9165388f3c1c8556273117586b55d22c5 (diff) | |
download | gcc-835c8e044b0f98ee7497281389a60e661588c796.zip gcc-835c8e044b0f98ee7497281389a60e661588c796.tar.gz gcc-835c8e044b0f98ee7497281389a60e661588c796.tar.bz2 |
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
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/combine.c | 17 |
2 files changed, 14 insertions, 8 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 879e7a5..deba212 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -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> diff --git a/gcc/combine.c b/gcc/combine.c index 549e0bf..e0a162a 100644 --- a/gcc/combine.c +++ b/gcc/combine.c @@ -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); } } |