revert: simplify-rtx.c (simplify_const_binary_operation): Use the shift_truncation_mask hook instead of performing modulo by width.
Revert: * 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: r175949
This commit is contained in:
parent
5511bc5ada
commit
d58c1a38e5
3 changed files with 14 additions and 4 deletions
|
@ -44,6 +44,14 @@
|
|||
simplify_comparison, record_promoted_value, simplify_compare_const,
|
||||
record_dead_and_set_regs_1): Likewise.
|
||||
|
||||
Revert:
|
||||
* 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.
|
||||
|
||||
2011-07-06 Michael Meissner <meissner@linux.vnet.ibm.com>
|
||||
|
||||
* config/rs6000/rs6000-protos.h (rs6000_call_indirect_aix): New
|
||||
|
|
|
@ -5939,7 +5939,9 @@ 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)),
|
||||
targetm.shift_truncation_mask (GET_MODE (x)),
|
||||
((unsigned HOST_WIDE_INT) 1
|
||||
<< exact_log2 (GET_MODE_BITSIZE (GET_MODE (x))))
|
||||
- 1,
|
||||
0));
|
||||
break;
|
||||
|
||||
|
@ -9875,7 +9877,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 &= targetm.shift_truncation_mask (mode);
|
||||
orig_count &= GET_MODE_BITSIZE (mode) - 1;
|
||||
|
||||
/* If we were given an invalid count, don't do anything except exactly
|
||||
what was requested. */
|
||||
|
|
|
@ -3768,8 +3768,8 @@ simplify_const_binary_operation (enum rtx_code code, enum machine_mode mode,
|
|||
shift_truncation_mask, since the shift might not be part of an
|
||||
ashlM3, lshrM3 or ashrM3 instruction. */
|
||||
if (SHIFT_COUNT_TRUNCATED)
|
||||
arg1 &= targetm.shift_truncation_mask (mode);
|
||||
else if (arg1 < 0 || arg1 >= GET_MODE_PRECISION (mode))
|
||||
arg1 = (unsigned HOST_WIDE_INT) arg1 % width;
|
||||
else if (arg1 < 0 || arg1 >= GET_MODE_BITSIZE (mode))
|
||||
return 0;
|
||||
|
||||
val = (code == ASHIFT
|
||||
|
|
Loading…
Add table
Reference in a new issue