Commit d58c1a38 by Bernd Schmidt Committed by Bernd Schmidt

revert: simplify-rtx.c (simplify_const_binary_operation): Use the…

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
parent 5511bc5a
...@@ -44,6 +44,14 @@ ...@@ -44,6 +44,14 @@
simplify_comparison, record_promoted_value, simplify_compare_const, simplify_comparison, record_promoted_value, simplify_compare_const,
record_dead_and_set_regs_1): Likewise. 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> 2011-07-06 Michael Meissner <meissner@linux.vnet.ibm.com>
* config/rs6000/rs6000-protos.h (rs6000_call_indirect_aix): New * 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, ...@@ -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))) else if (SHIFT_COUNT_TRUNCATED && !REG_P (XEXP (x, 1)))
SUBST (XEXP (x, 1), SUBST (XEXP (x, 1),
force_to_mode (XEXP (x, 1), GET_MODE (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)); 0));
break; break;
...@@ -9875,7 +9877,7 @@ simplify_shift_const_1 (enum rtx_code code, enum machine_mode result_mode, ...@@ -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 want to do this inside the loop as it makes it more difficult to
combine shifts. */ combine shifts. */
if (SHIFT_COUNT_TRUNCATED) 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 /* If we were given an invalid count, don't do anything except exactly
what was requested. */ what was requested. */
......
...@@ -3768,8 +3768,8 @@ simplify_const_binary_operation (enum rtx_code code, enum machine_mode mode, ...@@ -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 shift_truncation_mask, since the shift might not be part of an
ashlM3, lshrM3 or ashrM3 instruction. */ ashlM3, lshrM3 or ashrM3 instruction. */
if (SHIFT_COUNT_TRUNCATED) if (SHIFT_COUNT_TRUNCATED)
arg1 &= targetm.shift_truncation_mask (mode); arg1 = (unsigned HOST_WIDE_INT) arg1 % width;
else if (arg1 < 0 || arg1 >= GET_MODE_PRECISION (mode)) else if (arg1 < 0 || arg1 >= GET_MODE_BITSIZE (mode))
return 0; return 0;
val = (code == ASHIFT val = (code == ASHIFT
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment