Commit 35f1c975 by Eric Botcazou Committed by Eric Botcazou

re PR c/8588 (ICE in extract_insn, at recog.c:2148)

2002-11-19 �Eric Botcazou �<ebotcazou@libertysurf.fr>

	PR c/8588
	* optabs.c (expand_binop): Convert CONST_INTs in shift
	operations too.

From-SVN: r59274
parent a500466b
2002-11-19 Eric Botcazou <ebotcazou@libertysurf.fr>
PR c/8588
* optabs.c (expand_binop): Convert CONST_INTs in shift
operations too.
2002-11-19 Roger Sayle <roger@eyesopen.com> 2002-11-19 Roger Sayle <roger@eyesopen.com>
* gcse.c (gcse_emit_move_after): Correct typo in REG_EQUAL note. * gcse.c (gcse_emit_move_after): Correct typo in REG_EQUAL note.
......
...@@ -781,9 +781,8 @@ expand_binop (mode, binoptab, op0, op1, target, unsignedp, methods) ...@@ -781,9 +781,8 @@ expand_binop (mode, binoptab, op0, op1, target, unsignedp, methods)
/* In case the insn wants input operands in modes different from /* In case the insn wants input operands in modes different from
those of the actual operands, convert the operands. It would those of the actual operands, convert the operands. It would
seem that we don't need to convert CONST_INTs, but we do, so seem that we don't need to convert CONST_INTs, but we do, so
that they're properly zero-extended or sign-extended for their that they're properly zero-extended, sign-extended or truncated
modes; shift operations are an exception, because the second for their mode. */
operand need not be extended to the mode of the result. */
if (GET_MODE (op0) != mode0 && mode0 != VOIDmode) if (GET_MODE (op0) != mode0 && mode0 != VOIDmode)
xop0 = convert_modes (mode0, xop0 = convert_modes (mode0,
...@@ -796,7 +795,7 @@ expand_binop (mode, binoptab, op0, op1, target, unsignedp, methods) ...@@ -796,7 +795,7 @@ expand_binop (mode, binoptab, op0, op1, target, unsignedp, methods)
xop1 = convert_modes (mode1, xop1 = convert_modes (mode1,
GET_MODE (op1) != VOIDmode GET_MODE (op1) != VOIDmode
? GET_MODE (op1) ? GET_MODE (op1)
: (shift_op ? mode1 : mode), : mode,
xop1, unsignedp); xop1, unsignedp);
/* Now, if insn's predicates don't allow our operands, put them into /* Now, if insn's predicates don't allow our operands, put them into
...@@ -2234,8 +2233,8 @@ expand_twoval_binop (binoptab, op0, op1, targ0, targ1, unsignedp) ...@@ -2234,8 +2233,8 @@ expand_twoval_binop (binoptab, op0, op1, targ0, targ1, unsignedp)
/* In case the insn wants input operands in modes different from /* In case the insn wants input operands in modes different from
those of the actual operands, convert the operands. It would those of the actual operands, convert the operands. It would
seem that we don't need to convert CONST_INTs, but we do, so seem that we don't need to convert CONST_INTs, but we do, so
that they're properly zero-extended or sign-extended for their that they're properly zero-extended, sign-extended or truncated
modes. */ for their mode. */
if (GET_MODE (op0) != mode0 && mode0 != VOIDmode) if (GET_MODE (op0) != mode0 && mode0 != VOIDmode)
xop0 = convert_modes (mode0, xop0 = convert_modes (mode0,
......
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