optabs.c (expand_binop): Minor cleanup.
* optabs.c (expand_binop): Minor cleanup. (expand_twoval_binop): Convert CONST_INTs like in expand_binop. From-SVN: r57046
This commit is contained in:
parent
d1df930ba1
commit
874f6a6d1f
2 changed files with 27 additions and 14 deletions
|
@ -1,3 +1,8 @@
|
|||
2002-09-09 Eric Botcazou ebotcazou@libertysurf.fr
|
||||
|
||||
* optabs.c (expand_binop): Minor cleanup.
|
||||
(expand_twoval_binop): Convert CONST_INTs like in expand_binop.
|
||||
|
||||
2002-09-11 Dan Nicolaescu <dann@ics.uci.edu>
|
||||
|
||||
* print-tree.c (print_node): Print the restrict qualifier.
|
||||
|
|
36
gcc/optabs.c
36
gcc/optabs.c
|
@ -783,24 +783,20 @@ expand_binop (mode, binoptab, op0, op1, target, unsignedp, methods)
|
|||
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. */
|
||||
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,
|
||||
GET_MODE (op0) != VOIDmode
|
||||
? GET_MODE (op0)
|
||||
: mode,
|
||||
xop0, unsignedp);
|
||||
|
||||
if (GET_MODE (xop1) != mode1
|
||||
&& mode1 != VOIDmode)
|
||||
if (GET_MODE (op1) != mode1 && mode1 != VOIDmode)
|
||||
xop1 = convert_modes (mode1,
|
||||
GET_MODE (op1) != VOIDmode
|
||||
? GET_MODE (op1)
|
||||
: ! shift_op
|
||||
? mode
|
||||
: mode1,
|
||||
: (shift_op ? mode1 : mode),
|
||||
xop1, unsignedp);
|
||||
|
||||
/* Now, if insn's predicates don't allow our operands, put them into
|
||||
|
@ -2235,13 +2231,25 @@ expand_twoval_binop (binoptab, op0, op1, targ0, targ1, unsignedp)
|
|||
rtx pat;
|
||||
rtx xop0 = op0, xop1 = op1;
|
||||
|
||||
/* In case this insn wants input operands in modes different from the
|
||||
result, convert the operands. */
|
||||
if (GET_MODE (op0) != VOIDmode && GET_MODE (op0) != mode0)
|
||||
xop0 = convert_to_mode (mode0, xop0, 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. */
|
||||
|
||||
if (GET_MODE (op1) != VOIDmode && GET_MODE (op1) != mode1)
|
||||
xop1 = convert_to_mode (mode1, xop1, unsignedp);
|
||||
if (GET_MODE (op0) != mode0 && mode0 != VOIDmode)
|
||||
xop0 = convert_modes (mode0,
|
||||
GET_MODE (op0) != VOIDmode
|
||||
? GET_MODE (op0)
|
||||
: mode,
|
||||
xop0, unsignedp);
|
||||
|
||||
if (GET_MODE (op1) != mode1 && mode1 != VOIDmode)
|
||||
xop1 = convert_modes (mode1,
|
||||
GET_MODE (op1) != VOIDmode
|
||||
? GET_MODE (op1)
|
||||
: mode,
|
||||
xop1, unsignedp);
|
||||
|
||||
/* Now, if insn doesn't accept these operands, put them into pseudos. */
|
||||
if (! (*insn_data[icode].operand[1].predicate) (xop0, mode0))
|
||||
|
|
Loading…
Add table
Reference in a new issue