From: mpolacek Date: Mon, 1 Sep 2014 09:18:43 +0000 (+0000) Subject: PR middle-end/61903 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=53c3bfa42b31f0f92e086b31bf72b7c5a5cb6c69;p=thirdparty%2Fgcc.git PR middle-end/61903 * expmed.c (store_fixed_bit_field_1): Shift UHWI 1 instead of HWI 1. Change the type of V to unsigned HOST_WIDE_INT. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@214781 138bc75d-0d04-0410-961f-82ee72b054a4 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 19f7f7935d68..ec0e6c44fd04 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2014-09-01 Marek Polacek + + PR middle-end/61903 + * expmed.c (store_fixed_bit_field_1): Shift UHWI 1 instead of HWI 1. + Change the type of V to unsigned HOST_WIDE_INT. + 2014-09-01 Thomas Preud'homme * tree-ssa-math-opts.c (struct symbolic_number): Clarify comment about diff --git a/gcc/expmed.c b/gcc/expmed.c index 1eb712e84ba8..82afd7fee504 100644 --- a/gcc/expmed.c +++ b/gcc/expmed.c @@ -1057,16 +1057,17 @@ store_fixed_bit_field_1 (rtx op0, unsigned HOST_WIDE_INT bitsize, if (CONST_INT_P (value)) { - HOST_WIDE_INT v = INTVAL (value); + unsigned HOST_WIDE_INT v = UINTVAL (value); if (bitsize < HOST_BITS_PER_WIDE_INT) - v &= ((HOST_WIDE_INT) 1 << bitsize) - 1; + v &= ((unsigned HOST_WIDE_INT) 1 << bitsize) - 1; if (v == 0) all_zero = 1; else if ((bitsize < HOST_BITS_PER_WIDE_INT - && v == ((HOST_WIDE_INT) 1 << bitsize) - 1) - || (bitsize == HOST_BITS_PER_WIDE_INT && v == -1)) + && v == ((unsigned HOST_WIDE_INT) 1 << bitsize) - 1) + || (bitsize == HOST_BITS_PER_WIDE_INT + && v == (unsigned HOST_WIDE_INT) -1)) all_one = 1; value = lshift_value (mode, v, bitnum);