From cf2f711352b94c880dc43f36ab4b58ab4bbf66c4 Mon Sep 17 00:00:00 2001 From: Richard Earnshaw Date: Thu, 15 Sep 1994 13:17:28 +0000 Subject: (expand_binop, multi-word shifts): Generate rtl free of conflicts for shifts less than one word. From-SVN: r8084 --- gcc/optabs.c | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) (limited to 'gcc') 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 (); -- cgit v1.1