aboutsummaryrefslogtreecommitdiff
path: root/gcc/combine.c
diff options
context:
space:
mode:
authorBernd Schmidt <bernds@codesourcery.com>2011-07-06 13:36:16 +0000
committerBernd Schmidt <bernds@gcc.gnu.org>2011-07-06 13:36:16 +0000
commitff3e08afdd5814f51dbe59332df690474de5f050 (patch)
treedac9f2b9f9f4e057938eba339861f1b99af29cc2 /gcc/combine.c
parenta369b6399c43d766cd7690753dbac32c4221354d (diff)
downloadgcc-ff3e08afdd5814f51dbe59332df690474de5f050.zip
gcc-ff3e08afdd5814f51dbe59332df690474de5f050.tar.gz
gcc-ff3e08afdd5814f51dbe59332df690474de5f050.tar.bz2
simplify-rtx.c (simplify_const_binary_operation): Use the shift_truncation_mask hook instead of performing modulo by width.
* simplify-rtx.c (simplify_const_binary_operation): Use the shift_truncation_mask hook instead of performing modulo by width. Compare against mode precision, not bitsize. * combine.c (combine_simplify_rtx, simplify_shift_const_1): Use shift_truncation_mask instead of constructing the value manually. From-SVN: r175913
Diffstat (limited to 'gcc/combine.c')
-rw-r--r--gcc/combine.c6
1 files changed, 2 insertions, 4 deletions
diff --git a/gcc/combine.c b/gcc/combine.c
index ba35f28..737f300 100644
--- a/gcc/combine.c
+++ b/gcc/combine.c
@@ -5946,9 +5946,7 @@ combine_simplify_rtx (rtx x, enum machine_mode op0_mode, int in_dest,
else if (SHIFT_COUNT_TRUNCATED && !REG_P (XEXP (x, 1)))
SUBST (XEXP (x, 1),
force_to_mode (XEXP (x, 1), GET_MODE (XEXP (x, 1)),
- ((unsigned HOST_WIDE_INT) 1
- << exact_log2 (GET_MODE_BITSIZE (GET_MODE (x))))
- - 1,
+ targetm.shift_truncation_mask (GET_MODE (x)),
0));
break;
@@ -9901,7 +9899,7 @@ simplify_shift_const_1 (enum rtx_code code, enum machine_mode result_mode,
want to do this inside the loop as it makes it more difficult to
combine shifts. */
if (SHIFT_COUNT_TRUNCATED)
- orig_count &= GET_MODE_BITSIZE (mode) - 1;
+ orig_count &= targetm.shift_truncation_mask (mode);
/* If we were given an invalid count, don't do anything except exactly
what was requested. */