optabs.c (expand_binop): When synthesizing double word rotates from single word shifts...
* optabs.c (expand_binop): When synthesizing double word rotates from single word shifts, use a new register target if the provided target is not a REG already. From-SVN: r79875
This commit is contained in:
parent
22421b79c8
commit
0c0ab0f1e8
2 changed files with 12 additions and 2 deletions
|
@ -1,3 +1,9 @@
|
|||
2004-03-23 Olivier Hainque <hainque@act-europe.fr>
|
||||
|
||||
* optabs.c (expand_binop): When synthesizing double word rotates
|
||||
from single word shifts, use a new register target if the provided
|
||||
target is not a REG already.
|
||||
|
||||
2004-03-23 Richard Kenner <kenner@vlsi1.ultra.nyu.edu>
|
||||
|
||||
* alias.c (get_alias_set): Add support for TYPE_REF_CAN_ALIAS_ALL.
|
||||
|
|
|
@ -1087,8 +1087,12 @@ expand_binop (enum machine_mode mode, optab binoptab, rtx op0, rtx op1,
|
|||
int shift_count, left_shift, outof_word;
|
||||
|
||||
/* If TARGET is the same as one of the operands, the REG_EQUAL note
|
||||
won't be accurate, so use a new target. */
|
||||
if (target == 0 || target == op0 || target == op1)
|
||||
won't be accurate, so use a new target. Do this also if target is not
|
||||
a REG, first because having a register instead may open optimization
|
||||
oportunities, and second because if target and op0 happen to be MEMs
|
||||
designating the same location, we would risk clobbering it too early
|
||||
in the code sequence we generate below. */
|
||||
if (target == 0 || target == op0 || target == op1 || ! REG_P (target))
|
||||
target = gen_reg_rtx (mode);
|
||||
|
||||
start_sequence ();
|
||||
|
|
Loading…
Add table
Reference in a new issue