bitmap.h (+bmp_iter_next_bit): New.
* bitmap.h (+bmp_iter_next_bit): New. (bmp_iter_set, bmp_iter_and, bmp_iter_and_compl): Use it. From-SVN: r160637
This commit is contained in:
parent
5914a70f0b
commit
d5568f03cd
@ -1,3 +1,9 @@
|
||||
2010-06-11 Jan Hubicka <jh@suse.cz>
|
||||
|
||||
* bitmap.h (+bmp_iter_next_bit): New.
|
||||
(bmp_iter_set, bmp_iter_and, bmp_iter_and_compl):
|
||||
Use it.
|
||||
|
||||
2010-06-11 Sandra Loosemore <sandra@codesourcery.com>
|
||||
Eric Botcazou <ebotcazou@adacore.com>
|
||||
|
||||
|
39
gcc/bitmap.h
39
gcc/bitmap.h
@ -385,6 +385,27 @@ bmp_iter_next (bitmap_iterator *bi, unsigned *bit_no)
|
||||
*bit_no += 1;
|
||||
}
|
||||
|
||||
/* Advance to first set bit in BI. */
|
||||
|
||||
static inline void
|
||||
bmp_iter_next_bit (bitmap_iterator * bi, unsigned *bit_no)
|
||||
{
|
||||
#if (GCC_VERSION >= 3004)
|
||||
{
|
||||
unsigned int n = __builtin_ctzl (bi->bits);
|
||||
gcc_assert (sizeof (unsigned long) == sizeof (BITMAP_WORD));
|
||||
bi->bits >>= n;
|
||||
*bit_no += n;
|
||||
}
|
||||
#else
|
||||
while (!(bi->bits & 1))
|
||||
{
|
||||
bi->bits >>= 1;
|
||||
*bit_no += 1;
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
/* Advance to the next nonzero bit of a single bitmap, we will have
|
||||
already advanced past the just iterated bit. Return true if there
|
||||
is a bit to iterate. */
|
||||
@ -396,11 +417,7 @@ bmp_iter_set (bitmap_iterator *bi, unsigned *bit_no)
|
||||
if (bi->bits)
|
||||
{
|
||||
next_bit:
|
||||
while (!(bi->bits & 1))
|
||||
{
|
||||
bi->bits >>= 1;
|
||||
*bit_no += 1;
|
||||
}
|
||||
bmp_iter_next_bit (bi, bit_no);
|
||||
return true;
|
||||
}
|
||||
|
||||
@ -443,11 +460,7 @@ bmp_iter_and (bitmap_iterator *bi, unsigned *bit_no)
|
||||
if (bi->bits)
|
||||
{
|
||||
next_bit:
|
||||
while (!(bi->bits & 1))
|
||||
{
|
||||
bi->bits >>= 1;
|
||||
*bit_no += 1;
|
||||
}
|
||||
bmp_iter_next_bit (bi, bit_no);
|
||||
return true;
|
||||
}
|
||||
|
||||
@ -510,11 +523,7 @@ bmp_iter_and_compl (bitmap_iterator *bi, unsigned *bit_no)
|
||||
if (bi->bits)
|
||||
{
|
||||
next_bit:
|
||||
while (!(bi->bits & 1))
|
||||
{
|
||||
bi->bits >>= 1;
|
||||
*bit_no += 1;
|
||||
}
|
||||
bmp_iter_next_bit (bi, bit_no);
|
||||
return true;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user