mirror of
git://gcc.gnu.org/git/gcc.git
synced 2025-04-15 14:50:52 +08:00
re PR middle-end/61903 (signed integer overflow in expmed.c store_fixed_bit_filed_1)
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. From-SVN: r214781
This commit is contained in:
parent
e3ef4162ba
commit
e507a43338
@ -1,3 +1,9 @@
|
||||
2014-09-01 Marek Polacek <polacek@redhat.com>
|
||||
|
||||
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 <thomas.preudhomme@arm.com>
|
||||
|
||||
* tree-ssa-math-opts.c (struct symbolic_number): Clarify comment about
|
||||
|
@ -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);
|
||||
|
Loading…
x
Reference in New Issue
Block a user