aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gcc/ChangeLog7
-rw-r--r--gcc/optabs.c6
2 files changed, 10 insertions, 3 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index d4eb66f..706052d 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,10 @@
+2009-10-17 Andy Hutchinson <hutchinsonandy@gcc.gnu.org>
+
+ PR middle-end/41738
+ * optabs.c (expand_binop): Make mode of shift count expression mode
+ of shift count not target.
+ Remove indent nit.
+
2009-10-17 Eric Botcazou <ebotcazou@adacore.com>
* tree-nested.c (convert_nonlocal_reference_stmt) <GIMPLE_COND>: New
diff --git a/gcc/optabs.c b/gcc/optabs.c
index 1c13623..39257f5 100644
--- a/gcc/optabs.c
+++ b/gcc/optabs.c
@@ -1595,11 +1595,11 @@ expand_binop (enum machine_mode mode, optab binoptab, rtx op0, rtx op1,
unsigned int bits = GET_MODE_BITSIZE (mode);
if (CONST_INT_P (op1))
- newop1 = GEN_INT (bits - INTVAL (op1));
+ newop1 = GEN_INT (bits - INTVAL (op1));
else if (targetm.shift_truncation_mask (mode) == bits - 1)
- newop1 = negate_rtx (mode, op1);
+ newop1 = negate_rtx (GET_MODE (op1), op1);
else
- newop1 = expand_binop (mode, sub_optab,
+ newop1 = expand_binop (GET_MODE (op1), sub_optab,
GEN_INT (bits), op1,
NULL_RTX, unsignedp, OPTAB_DIRECT);