diff options
author | Markus Trippelsdorf <markus@trippelsdorf.de> | 2014-09-30 07:07:55 +0000 |
---|---|---|
committer | Markus Trippelsdorf <trippels@gcc.gnu.org> | 2014-09-30 07:07:55 +0000 |
commit | 4176084b61c55045e4ac47c1b8794292f61b44e1 (patch) | |
tree | f7674b307aebc628adf661a398bf3c3a990f9d10 /gcc/data-streamer.c | |
parent | ff5101bf0dd39a12e9d5a40b2bfafee9248307a4 (diff) | |
download | gcc-4176084b61c55045e4ac47c1b8794292f61b44e1.zip gcc-4176084b61c55045e4ac47c1b8794292f61b44e1.tar.gz gcc-4176084b61c55045e4ac47c1b8794292f61b44e1.tar.bz2 |
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
Diffstat (limited to 'gcc/data-streamer.c')
-rw-r--r-- | gcc/data-streamer.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/gcc/data-streamer.c b/gcc/data-streamer.c index 0e19c72..785beb5 100644 --- a/gcc/data-streamer.c +++ b/gcc/data-streamer.c @@ -110,7 +110,7 @@ bp_unpack_var_len_int (struct bitpack_d *bp) if ((half_byte & 0x8) == 0) { if ((shift < HOST_BITS_PER_WIDE_INT) && (half_byte & 0x4)) - result |= - ((HOST_WIDE_INT)1 << shift); + result |= - (HOST_WIDE_INT_1U << shift); return result; } |