diff options
author | Richard Earnshaw <erich@gnu.org> | 1994-09-15 13:17:28 +0000 |
---|---|---|
committer | Richard Earnshaw <erich@gnu.org> | 1994-09-15 13:17:28 +0000 |
commit | cf2f711352b94c880dc43f36ab4b58ab4bbf66c4 (patch) | |
tree | e335b1f677b29bb4781c3cf63d15596582bd23ec /gcc | |
parent | d90aadbb6db9ad493ffdb1b9e9805af2438f5594 (diff) | |
download | gcc-cf2f711352b94c880dc43f36ab4b58ab4bbf66c4.zip gcc-cf2f711352b94c880dc43f36ab4b58ab4bbf66c4.tar.gz gcc-cf2f711352b94c880dc43f36ab4b58ab4bbf66c4.tar.bz2 |
(expand_binop, multi-word shifts): Generate rtl
free of conflicts for shifts less than one word.
From-SVN: r8084
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/optabs.c | 14 |
1 files changed, 7 insertions, 7 deletions
diff --git a/gcc/optabs.c b/gcc/optabs.c index 89595c7..6cc8510 100644 --- a/gcc/optabs.c +++ b/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 (); |