diff options
author | Eric Botcazou <ebotcazou@libertysurf.fr> | 2002-11-19 20:13:20 +0000 |
---|---|---|
committer | Eric Botcazou <ebotcazou@gcc.gnu.org> | 2002-11-19 20:13:20 +0000 |
commit | 35f1c975a38e5a0d721777cb776576c169ed919e (patch) | |
tree | 00ebe901bb960a13502c3619279735ce331441dd | |
parent | a500466ba170808df6f39ce30a92fd6b1555d821 (diff) | |
download | gcc-35f1c975a38e5a0d721777cb776576c169ed919e.zip gcc-35f1c975a38e5a0d721777cb776576c169ed919e.tar.gz gcc-35f1c975a38e5a0d721777cb776576c169ed919e.tar.bz2 |
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
-rw-r--r-- | gcc/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/optabs.c | 11 |
2 files changed, 11 insertions, 6 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 9e77214..91f8dc9 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -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> * gcse.c (gcse_emit_move_after): Correct typo in REG_EQUAL note. diff --git a/gcc/optabs.c b/gcc/optabs.c index 3852b6f..1551ff8 100644 --- a/gcc/optabs.c +++ b/gcc/optabs.c @@ -781,9 +781,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 need 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) xop0 = convert_modes (mode0, @@ -796,7 +795,7 @@ expand_binop (mode, binoptab, op0, op1, target, unsignedp, methods) xop1 = convert_modes (mode1, GET_MODE (op1) != VOIDmode ? GET_MODE (op1) - : (shift_op ? mode1 : mode), + : mode, xop1, unsignedp); /* 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 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. */ + that they're properly zero-extended, sign-extended or truncated + for their mode. */ if (GET_MODE (op0) != mode0 && mode0 != VOIDmode) xop0 = convert_modes (mode0, |