Commit b60db1ba by Kenneth Zadeck Committed by Kenneth Zadeck

sbitmap.c (sbitmap_range_empty_p): New function.

2008-04-24  Kenneth Zadeck <zadeck@naturalbridge.com>
	* sbitmap.c (sbitmap_range_empty_p): New function.
	* sbitmap.h (sbitmap_range_empty_p): New function.
	* bitmap.h: Now includes obstack.h.

From-SVN: r134529
parent 6d9d0028
2008-04-24 Kenneth Zadeck <zadeck@naturalbridge.com>
* sbitmap.c (sbitmap_range_empty_p): New function.
* sbitmap.h (sbitmap_range_empty_p): New function.
* bitmap.h: Now includes obstack.h.
2008-04-24 Richard Sandiford <rsandifo@nildram.co.uk>
Kenneth Zadeck <zadeck@naturalbridge.com>
......
......@@ -22,6 +22,7 @@ along with GCC; see the file COPYING3. If not see
#define GCC_BITMAP_H
#include "hashtab.h"
#include "statistics.h"
#include "obstack.h"
/* Fundamental storage type for bitmap. */
......
/* Simple bitmaps.
Copyright (C) 1999, 2000, 2002, 2003, 2004, 2006, 2007
Copyright (C) 1999, 2000, 2002, 2003, 2004, 2006, 2007, 2008
Free Software Foundation, Inc.
This file is part of GCC.
......@@ -273,6 +273,57 @@ sbitmap_empty_p (const_sbitmap bmap)
return true;
}
/* Return false if any of the N bits are set in MAP starting at
START. */
bool
sbitmap_range_empty_p (const_sbitmap bmap, unsigned int start, unsigned int n)
{
unsigned int i = start / SBITMAP_ELT_BITS;
SBITMAP_ELT_TYPE elm;
unsigned int shift = start % SBITMAP_ELT_BITS;
gcc_assert (bmap->n_bits >= start + n);
elm = bmap->elms[i];
elm = elm >> shift;
if (shift + n <= SBITMAP_ELT_BITS)
{
/* The bits are totally contained in a single element. */
if (shift + n < SBITMAP_ELT_BITS)
elm &= ((1 << n) - 1);
return (elm == 0);
}
if (elm)
return false;
n -= SBITMAP_ELT_BITS - shift;
i++;
/* Deal with full elts. */
while (n >= SBITMAP_ELT_BITS)
{
if (bmap->elms[i])
return false;
i++;
n -= SBITMAP_ELT_BITS;
}
/* The leftover bits. */
if (n)
{
elm = bmap->elms[i];
elm &= ((1 << n) - 1);
return (elm == 0);
}
return true;
}
/* Zero all elements in a bitmap. */
void
......
/* Simple bitmaps.
Copyright (C) 1999, 2000, 2002, 2003, 2004, 2006, 2007
Copyright (C) 1999, 2000, 2002, 2003, 2004, 2006, 2007, 2008
Free Software Foundation, Inc.
This file is part of GCC.
......@@ -219,6 +219,7 @@ extern void sbitmap_copy (sbitmap, const_sbitmap);
extern void sbitmap_copy_n (sbitmap, const_sbitmap, unsigned int);
extern int sbitmap_equal (const_sbitmap, const_sbitmap);
extern bool sbitmap_empty_p (const_sbitmap);
extern bool sbitmap_range_empty_p (const_sbitmap, unsigned int, unsigned int);
extern void sbitmap_zero (sbitmap);
extern void sbitmap_ones (sbitmap);
extern void sbitmap_vector_zero (sbitmap *, unsigned int);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment