From: Richard Stallman Date: Sun, 13 Sep 1992 17:26:24 +0000 (+0000) Subject: (expand_binop): Convert op1 of shift libcall to word_mode. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=0bbb7f4d247de49a2a322c384acddd11337b2e71;p=gcc.git (expand_binop): Convert op1 of shift libcall to word_mode. From-SVN: r2117 --- diff --git a/gcc/optabs.c b/gcc/optabs.c index 390cb7297d2..5466892cd0e 100644 --- a/gcc/optabs.c +++ b/gcc/optabs.c @@ -1059,14 +1059,23 @@ expand_binop (mode, binoptab, op0, op1, target, unsignedp, methods) { rtx insns; rtx funexp = binoptab->handlers[(int) mode].libfunc; + rtx op1x = op1; + enum machine_mode op1_mode = mode; start_sequence (); + if (shift_op) + { + op1_mode = word_mode; + /* Specify unsigned here, + since negative shift counts are meaningless. */ + op1x = convert_to_mode (word_mode, op1, 1); + } + /* Pass 1 for NO_QUEUE so we don't lose any increments if the libcall is cse'd or moved. */ emit_library_call (binoptab->handlers[(int) mode].libfunc, - 1, mode, 2, op0, mode, op1, - (shift_op ? word_mode : mode)); + 1, mode, 2, op0, mode, op1x, op1_mode); insns = get_insns (); end_sequence ();