(expand_binop, multi-word shifts): Generate rtl
free of conflicts for shifts less than one word. From-SVN: r8084
This commit is contained in:
parent
d90aadbb6d
commit
cf2f711352
14
gcc/optabs.c
14
gcc/optabs.c
@ -689,13 +689,6 @@ expand_binop (mode, binoptab, op0, op1, target, unsignedp, methods)
|
|||||||
if (carries == 0)
|
if (carries == 0)
|
||||||
inter = 0;
|
inter = 0;
|
||||||
else
|
else
|
||||||
inter = expand_binop (word_mode, binoptab, outof_input,
|
|
||||||
op1, outof_target, unsignedp, next_methods);
|
|
||||||
|
|
||||||
if (inter != 0 && inter != outof_target)
|
|
||||||
emit_move_insn (outof_target, inter);
|
|
||||||
|
|
||||||
if (inter != 0)
|
|
||||||
inter = expand_binop (word_mode, unsigned_shift, into_input,
|
inter = expand_binop (word_mode, unsigned_shift, into_input,
|
||||||
op1, 0, unsignedp, next_methods);
|
op1, 0, unsignedp, next_methods);
|
||||||
|
|
||||||
@ -705,6 +698,13 @@ expand_binop (mode, binoptab, op0, op1, target, unsignedp, methods)
|
|||||||
|
|
||||||
if (inter != 0 && inter != into_target)
|
if (inter != 0 && inter != into_target)
|
||||||
emit_move_insn (into_target, inter);
|
emit_move_insn (into_target, inter);
|
||||||
|
|
||||||
|
if (inter != 0)
|
||||||
|
inter = expand_binop (word_mode, binoptab, outof_input,
|
||||||
|
op1, outof_target, unsignedp, next_methods);
|
||||||
|
|
||||||
|
if (inter != 0 && inter != outof_target)
|
||||||
|
emit_move_insn (outof_target, inter);
|
||||||
}
|
}
|
||||||
|
|
||||||
insns = get_insns ();
|
insns = get_insns ();
|
||||||
|
Loading…
Reference in New Issue
Block a user