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
This commit is contained in:
Eric Botcazou 2002-11-19 20:13:20 +00:00 committed by Eric Botcazou
parent a500466ba1
commit 35f1c975a3
2 changed files with 11 additions and 6 deletions

View File

@ -1,3 +1,9 @@
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.

View File

@ -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)
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)
/* 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,