diff options
author | Richard Henderson <rth@gcc.gnu.org> | 1999-10-04 11:39:19 -0700 |
---|---|---|
committer | Richard Henderson <rth@gcc.gnu.org> | 1999-10-04 11:39:19 -0700 |
commit | 393f3ad5b9faca002ce01cd61db226174f01f44a (patch) | |
tree | 3e752ed8fedf827fbcb5fb994aa11957817cc386 /gcc/sbitmap.c | |
parent | 4afd525437e0b5de945306de871c34f08e6f1e13 (diff) | |
download | gcc-393f3ad5b9faca002ce01cd61db226174f01f44a.tar.gz |
* sbitmap.c (sbitmap_ones): Don't set too many bits.
From-SVN: r29807
Diffstat (limited to 'gcc/sbitmap.c')
-rw-r--r-- | gcc/sbitmap.c | 11 |
1 files changed, 10 insertions, 1 deletions
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 |