Commit 61fb6bac by J"orn Rennecke Committed by Joern Rennecke

sh.c (gen_shl_and): Don't sign extend constant for kind two.

	* sh.c (gen_shl_and): Don't sign extend constant for kind two.
	Abort if trying to split kind 3 or 4 outside of combine.

From-SVN: r19772
parent 08e2846b
Fri May 15 11:21:16 1998 J"orn Rennecke <amylaar@cygnus.co.uk>
* sh.c (gen_shl_and): Don't sign extend constant for kind two.
Abort if trying to split kind 3 or 4 outside of combine.
Fri May 15 01:47:37 1998 Jeffrey A Law (law@cygnus.com) Fri May 15 01:47:37 1998 Jeffrey A Law (law@cygnus.com)
* mips.c (print_operand, case 'x'): Use HOST_WIDE_INT_PRINT_HEX. * mips.c (print_operand, case 'x'): Use HOST_WIDE_INT_PRINT_HEX.
......
...@@ -1335,13 +1335,13 @@ gen_shl_and (dest, left_rtx, mask_rtx, source) ...@@ -1335,13 +1335,13 @@ gen_shl_and (dest, left_rtx, mask_rtx, source)
} }
case 4: case 4:
shift_gen_fun = gen_shifty_op; shift_gen_fun = gen_shifty_op;
case 2:
case 3: case 3:
/* If the topmost bit that matters is set, set the topmost bits /* If the topmost bit that matters is set, set the topmost bits
that don't matter. This way, we might be able to get a shorter that don't matter. This way, we might be able to get a shorter
signed constant. */ signed constant. */
if (mask & ((HOST_WIDE_INT)1 << 31 - total_shift)) if (mask & ((HOST_WIDE_INT)1 << 31 - total_shift))
mask |= (HOST_WIDE_INT)~0 << (31 - total_shift); mask |= (HOST_WIDE_INT)~0 << (31 - total_shift);
case 2:
/* Don't expand fine-grained when combining, because that will /* Don't expand fine-grained when combining, because that will
make the pattern fail. */ make the pattern fail. */
if (rtx_equal_function_value_matters if (rtx_equal_function_value_matters
...@@ -1349,6 +1349,10 @@ gen_shl_and (dest, left_rtx, mask_rtx, source) ...@@ -1349,6 +1349,10 @@ gen_shl_and (dest, left_rtx, mask_rtx, source)
{ {
rtx operands[3]; rtx operands[3];
/* Cases 3 and 4 should be handled by this split
only while combining */
if (kind > 2)
abort ();
if (right) if (right)
{ {
emit_insn (gen_lshrsi3 (dest, source, GEN_INT (right))); emit_insn (gen_lshrsi3 (dest, source, GEN_INT (right)));
......
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