aboutsummaryrefslogtreecommitdiff
path: root/gcc/expmed.c
diff options
context:
space:
mode:
authorRichard Sandiford <rdsandiford@googlemail.com>2013-09-09 13:07:02 +0000
committerRichard Sandiford <rsandifo@gcc.gnu.org>2013-09-09 13:07:02 +0000
commit69a59f0fa9b65198e4c1f87265105d396a598ea5 (patch)
treea5201ad7e75918350ccb6467b3fc9ff8b667c680 /gcc/expmed.c
parent2f1cd2ebd65eae6d87332c0bcd5d0e840c886cf3 (diff)
downloadgcc-69a59f0fa9b65198e4c1f87265105d396a598ea5.zip
gcc-69a59f0fa9b65198e4c1f87265105d396a598ea5.tar.gz
gcc-69a59f0fa9b65198e4c1f87265105d396a598ea5.tar.bz2
gcc/
* combine.c (simplify_set, expand_field_assignment, extract_left_shift) (force_to_mode, simplify_shift_const_1, simplify_comparison): Use gen_int_mode with the mode of the associated simplify_* call. * explow.c (probe_stack_range, anti_adjust_stack_and_probe): Likewise. * expmed.c (expand_shift_1): Likewise. * function.c (instantiate_virtual_regs_in_insn): Likewise. * loop-iv.c (iv_number_of_iterations): Likewise. * loop-unroll.c (unroll_loop_runtime_iterations): Likewise. * simplify-rtx.c (simplify_binary_operation_1): Likewise. From-SVN: r202393
Diffstat (limited to 'gcc/expmed.c')
-rw-r--r--gcc/expmed.c7
1 files changed, 3 insertions, 4 deletions
diff --git a/gcc/expmed.c b/gcc/expmed.c
index f0a4837..747231f 100644
--- a/gcc/expmed.c
+++ b/gcc/expmed.c
@@ -2214,11 +2214,10 @@ expand_shift_1 (enum tree_code code, enum machine_mode mode, rtx shifted,
other_amount
= simplify_gen_unary (NEG, GET_MODE (op1),
op1, GET_MODE (op1));
+ HOST_WIDE_INT mask = GET_MODE_PRECISION (mode) - 1;
other_amount
- = simplify_gen_binary (AND, GET_MODE (op1),
- other_amount,
- GEN_INT (GET_MODE_PRECISION (mode)
- - 1));
+ = simplify_gen_binary (AND, GET_MODE (op1), other_amount,
+ gen_int_mode (mask, GET_MODE (op1)));
}
shifted = force_reg (mode, shifted);