OSDN Git Service

* sbitmap.h (sbitmap_iter_init): Consistently treat bit_num as
authorkazu <kazu@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 7 Jun 2005 20:45:08 +0000 (20:45 +0000)
committerkazu <kazu@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 7 Jun 2005 20:45:08 +0000 (20:45 +0000)
the current bit index with no modulo.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@100720 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/sbitmap.h

index e200023..04974e5 100644 (file)
@@ -1,3 +1,8 @@
+2005-06-07  Kazu Hirata  <kazu@codesourcery.com>
+
+       * sbitmap.h (sbitmap_iter_init): Consistently treat bit_num as
+       the current bit index with no modulo.
+
 2005-06-07  Sebastian Pop  <pop@cri.ensmp.fr>
 
        PR 18403 and meta PR 21861.
index fe23cbf..7f40d8a 100644 (file)
@@ -66,7 +66,7 @@ typedef struct {
   /* The current word index.  */
   unsigned int word_num;
 
-  /* The current bit index.  */
+  /* The current bit index (not modulo SBITMAP_ELT_BITS).  */
   unsigned int bit_num;
 
   /* The words currently visited.  */
@@ -80,14 +80,15 @@ static inline void
 sbitmap_iter_init (sbitmap_iterator *i, sbitmap bmp, unsigned int min)
 {
   i->word_num = min / (unsigned int) SBITMAP_ELT_BITS;
-  i->bit_num = min % (unsigned int) SBITMAP_ELT_BITS;
+  i->bit_num = min;
   i->size = bmp->size;
   i->ptr = bmp->elms;
 
   if (i->word_num >= i->size)
     i->word = 0;
   else
-    i->word = i->ptr[i->word_num] >> i->bit_num;
+    i->word = (i->ptr[i->word_num]
+              >> (i->bit_num % (unsigned int) SBITMAP_ELT_BITS));
 }
 
 /* Return true if we have more bits to visit, in which case *N is set