From 393f3ad5b9faca002ce01cd61db226174f01f44a Mon Sep 17 00:00:00 2001 From: Richard Henderson Date: Mon, 4 Oct 1999 11:39:19 -0700 Subject: [PATCH] * sbitmap.c (sbitmap_ones): Don't set too many bits. From-SVN: r29807 --- gcc/sbitmap.c | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/gcc/sbitmap.c b/gcc/sbitmap.c index 89d6600927d..8aae23aac64 100644 --- a/gcc/sbitmap.c +++ b/gcc/sbitmap.c @@ -115,7 +115,16 @@ void sbitmap_ones (bmap) sbitmap bmap; { + unsigned int last_bit; + memset (bmap->elms, -1, bmap->bytes); + + last_bit = bmap->n_bits % (unsigned) SBITMAP_ELT_BITS; + if (last_bit) + { + bmap->elms[bmap->size - 1] + = (SBITMAP_ELT_TYPE)-1 >> (SBITMAP_ELT_BITS - last_bit); + } } /* Zero a vector of N_VECS bitmaps. */ @@ -208,7 +217,7 @@ sbitmap_difference (dst, a, b) *dstp++ = *ap++ & (~*bp++); } -/* Set DST to be (A and B)). +/* Set DST to be (A and B). Return non-zero if any change is made. */ int -- 2.30.2