(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)
|
||||
inter = 0;
|
||||
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,
|
||||
op1, 0, unsignedp, next_methods);
|
||||
|
||||
@ -705,6 +698,13 @@ expand_binop (mode, binoptab, op0, op1, target, unsignedp, methods)
|
||||
|
||||
if (inter != 0 && inter != into_target)
|
||||
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 ();
|
||||
|
Loading…
Reference in New Issue
Block a user