This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
[PATCH v2] Fix signed integer overflow in gcc/data-streamer.c
- From: Markus Trippelsdorf <markus at trippelsdorf dot de>
- To: Steven Bosscher <stevenb dot gcc at gmail dot com>
- Cc: GCC Patches <gcc-patches at gcc dot gnu dot org>, Diego Novillo <dnovillo at google dot com>
- Date: Sun, 28 Sep 2014 14:57:10 +0200
- Subject: [PATCH v2] Fix signed integer overflow in gcc/data-streamer.c
- Authentication-results: sourceware.org; auth=none
- References: <20140928122218 dot GA302 at x4> <CABu31nPr=TdrfktUGhXDe841SRwf3tyHbmDe8Dr4D7PiHGtTBA at mail dot gmail dot com>
On 2014.09.28 at 14:36 +0200, Steven Bosscher wrote:
>
> Can you use HOST_WIDE_INT_1U for this?
Sure. Thanks for the suggestion.
(Fix now resembles similar idiom in data-streamer-in.c)
2014-09-28 Markus Trippelsdorf <markus@trippelsdorf.de>
* data-streamer.c (bp_unpack_var_len_int): Avoid signed
integer overflow.
diff --git a/gcc/data-streamer.c b/gcc/data-streamer.c
index 0e19c72162aa..785beb5165fa 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;
}
--
Markus