Commit 4176084b by Markus Trippelsdorf Committed by Markus Trippelsdorf

Fix signed integer overflow in data-streamer.c

Running the testsuite with a -fsanitize=undefined instrumented compiler
shows:
 % gcc -O2 -flto -fno-use-linker-plugin -flto-partition=none testsuite/gcc.dg/torture/pr28045.c
gcc/data-streamer.c:113:45: runtime error: negation of -9223372036854775808 cannot be represented in type 'long int'; cast to an unsigned type to negate this value to itself

The fix is obvious.

From-SVN: r215706
parent ff5101bf
2014-09-30 Markus Trippelsdorf <markus@trippelsdorf.de>
* data-streamer.c (bp_unpack_var_len_int): Avoid signed
integer overflow.
2014-09-29 Andi Kleen <ak@linux.intel.com> 2014-09-29 Andi Kleen <ak@linux.intel.com>
* opts.c (print_filtered_help): Print --param min/max/default * opts.c (print_filtered_help): Print --param min/max/default
...@@ -110,7 +110,7 @@ bp_unpack_var_len_int (struct bitpack_d *bp) ...@@ -110,7 +110,7 @@ bp_unpack_var_len_int (struct bitpack_d *bp)
if ((half_byte & 0x8) == 0) if ((half_byte & 0x8) == 0)
{ {
if ((shift < HOST_BITS_PER_WIDE_INT) && (half_byte & 0x4)) if ((shift < HOST_BITS_PER_WIDE_INT) && (half_byte & 0x4))
result |= - ((HOST_WIDE_INT)1 << shift); result |= - (HOST_WIDE_INT_1U << shift);
return result; return result;
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment