aboutsummaryrefslogtreecommitdiff
path: root/gcc/combine.c
diff options
context:
space:
mode:
authorDonn Terry <donn@interix.com>1999-03-25 00:48:16 +0000
committerJeff Law <law@gcc.gnu.org>1999-03-24 17:48:16 -0700
commit835c8e044b0f98ee7497281389a60e661588c796 (patch)
tree062017b91fb65501bd9e8848abe4a28fb4ac5363 /gcc/combine.c
parent5e7d21e9165388f3c1c8556273117586b55d22c5 (diff)
downloadgcc-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/combine.c')
-rw-r--r--gcc/combine.c17
1 files changed, 9 insertions, 8 deletions
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);
}
}