diff options
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 89d6600..8aae23a 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 |