From: Eric Botcazou Date: Sat, 23 Nov 2002 08:36:25 +0000 (+0100) Subject: re PR c/8588 (ICE in extract_insn, at recog.c:2148) X-Git-Tag: releases/gcc-3.2.2~257 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=8d97a73440f7c974933898ef799be8c68acd6ba0;p=thirdparty%2Fgcc.git re PR c/8588 (ICE in extract_insn, at recog.c:2148) PR c/8588 * optabs.c (expand_binop): Convert CONST_INTs in shift operations too. From-SVN: r59413 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 92f7903de622..719dcd345550 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2002-11-23 Eric Botcazou + + PR c/8588 + * optabs.c (expand_binop): Convert CONST_INTs in shift + operations too. + 2002-11-23  Eric Botcazou   PR c/8518 diff --git a/gcc/optabs.c b/gcc/optabs.c index 1cf2803295de..19a7a951fb5a 100644 --- a/gcc/optabs.c +++ b/gcc/optabs.c @@ -754,9 +754,8 @@ expand_binop (mode, binoptab, op0, op1, target, unsignedp, methods) /* In case the insn wants input operands in modes different from those of the actual operands, convert the operands. It would 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 - modes; shift operations are an exception, because the second - operand needs not be extended to the mode of the result. */ + that they're properly zero-extended, sign-extended or truncated + for their mode. */ if (GET_MODE (op0) != mode0 && mode0 != VOIDmode) @@ -771,9 +770,7 @@ expand_binop (mode, binoptab, op0, op1, target, unsignedp, methods) xop1 = convert_modes (mode1, GET_MODE (op1) != VOIDmode ? GET_MODE (op1) - : ! shift_op - ? mode - : mode1, + : mode, xop1, unsignedp); /* Now, if insn's predicates don't allow our operands, put them into