Commit be5b01f3 by Kaveh R. Ghazi Committed by Kaveh Ghazi

sbitmap.c (sbitmap_verify_popcount, [...]): Constify.

	* sbitmap.c (sbitmap_verify_popcount, sbitmap_alloc_with_popcount,
	sbitmap_copy, sbitmap_copy_n, sbitmap_equal, sbitmap_empty_p,
	sbitmap_union_of_diff_cg, sbitmap_union_of_diff, sbitmap_not,
	sbitmap_difference, sbitmap_any_common_bits, sbitmap_a_and_b_cg,
	sbitmap_a_and_b, sbitmap_a_xor_b_cg, sbitmap_a_xor_b,
	sbitmap_a_or_b_cg, sbitmap_a_or_b, sbitmap_a_subset_b_p,
	sbitmap_a_or_b_and_c_cg, sbitmap_a_or_b_and_c,
	sbitmap_a_and_b_or_c_cg, sbitmap_a_and_b_or_c,
	sbitmap_first_set_bit, sbitmap_last_set_bit, dump_sbitmap,
	dump_sbitmap_file, debug_sbitmap, popcount_table,
	sbitmap_popcount): Constify.
	* sbitmap.h (const_sbitmap, const_sbitmap_ptr): New.
	(sbitmap_iterator, sbitmap_iter_init, dump_sbitmap,
	dump_sbitmap_file, sbitmap_copy, sbitmap_copy_n, sbitmap_equal,
	sbitmap_empty_p, sbitmap_union_of_diff, sbitmap_union_of_diff_cg,
	sbitmap_difference, sbitmap_not, sbitmap_a_or_b_and_c,
	sbitmap_a_or_b_and_c_cg, sbitmap_a_and_b_or_c,
	sbitmap_a_and_b_or_c_cg, sbitmap_any_common_bits, sbitmap_a_and_b,
	sbitmap_a_and_b_cg, sbitmap_a_or_b, sbitmap_a_or_b_cg,
	sbitmap_a_xor_b, sbitmap_a_xor_b_cg, sbitmap_a_subset_b_p,
	sbitmap_first_set_bit, sbitmap_last_set_bit, debug_sbitmap,
	sbitmap_popcount, sbitmap_verify_popcount): Constify.

From-SVN: r126929
parent e326eeb5
2007-07-25 Kaveh R. Ghazi <ghazi@caip.rutgers.edu> 2007-07-25 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
* sbitmap.c (sbitmap_verify_popcount, sbitmap_alloc_with_popcount,
sbitmap_copy, sbitmap_copy_n, sbitmap_equal, sbitmap_empty_p,
sbitmap_union_of_diff_cg, sbitmap_union_of_diff, sbitmap_not,
sbitmap_difference, sbitmap_any_common_bits, sbitmap_a_and_b_cg,
sbitmap_a_and_b, sbitmap_a_xor_b_cg, sbitmap_a_xor_b,
sbitmap_a_or_b_cg, sbitmap_a_or_b, sbitmap_a_subset_b_p,
sbitmap_a_or_b_and_c_cg, sbitmap_a_or_b_and_c,
sbitmap_a_and_b_or_c_cg, sbitmap_a_and_b_or_c,
sbitmap_first_set_bit, sbitmap_last_set_bit, dump_sbitmap,
dump_sbitmap_file, debug_sbitmap, popcount_table,
sbitmap_popcount): Constify.
* sbitmap.h (const_sbitmap, const_sbitmap_ptr): New.
(sbitmap_iterator, sbitmap_iter_init, dump_sbitmap,
dump_sbitmap_file, sbitmap_copy, sbitmap_copy_n, sbitmap_equal,
sbitmap_empty_p, sbitmap_union_of_diff, sbitmap_union_of_diff_cg,
sbitmap_difference, sbitmap_not, sbitmap_a_or_b_and_c,
sbitmap_a_or_b_and_c_cg, sbitmap_a_and_b_or_c,
sbitmap_a_and_b_or_c_cg, sbitmap_any_common_bits, sbitmap_a_and_b,
sbitmap_a_and_b_cg, sbitmap_a_or_b, sbitmap_a_or_b_cg,
sbitmap_a_xor_b, sbitmap_a_xor_b_cg, sbitmap_a_subset_b_p,
sbitmap_first_set_bit, sbitmap_last_set_bit, debug_sbitmap,
sbitmap_popcount, sbitmap_verify_popcount): Constify.
2007-07-25 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
* bitmap.c (hash_descriptor, eq_descriptor, bitmap_element_zerop, * bitmap.c (hash_descriptor, eq_descriptor, bitmap_element_zerop,
bitmap_copy, bitmap_clear_bit, popcount_table, bitmap_count_bits, bitmap_copy, bitmap_clear_bit, popcount_table, bitmap_count_bits,
bitmap_first_set_bit, bitmap_and, bitmap_and_into, bitmap_first_set_bit, bitmap_and, bitmap_and_into,
......
...@@ -52,7 +52,7 @@ static unsigned long sbitmap_elt_popcount (SBITMAP_ELT_TYPE); ...@@ -52,7 +52,7 @@ static unsigned long sbitmap_elt_popcount (SBITMAP_ELT_TYPE);
if there is a cached value. */ if there is a cached value. */
void void
sbitmap_verify_popcount (sbitmap a) sbitmap_verify_popcount (const_sbitmap a)
{ {
unsigned ix; unsigned ix;
unsigned int lastword; unsigned int lastword;
...@@ -92,9 +92,7 @@ sbitmap_alloc (unsigned int n_elms) ...@@ -92,9 +92,7 @@ sbitmap_alloc (unsigned int n_elms)
sbitmap sbitmap
sbitmap_alloc_with_popcount (unsigned int n_elms) sbitmap_alloc_with_popcount (unsigned int n_elms)
{ {
sbitmap bmap; sbitmap const bmap = sbitmap_alloc (n_elms);
bmap = sbitmap_alloc (n_elms);
bmap->popcount = xmalloc (bmap->size * sizeof (unsigned char)); bmap->popcount = xmalloc (bmap->size * sizeof (unsigned char));
return bmap; return bmap;
} }
...@@ -239,7 +237,7 @@ sbitmap_vector_alloc (unsigned int n_vecs, unsigned int n_elms) ...@@ -239,7 +237,7 @@ sbitmap_vector_alloc (unsigned int n_vecs, unsigned int n_elms)
/* Copy sbitmap SRC to DST. */ /* Copy sbitmap SRC to DST. */
void void
sbitmap_copy (sbitmap dst, sbitmap src) sbitmap_copy (sbitmap dst, const_sbitmap src)
{ {
memcpy (dst->elms, src->elms, sizeof (SBITMAP_ELT_TYPE) * dst->size); memcpy (dst->elms, src->elms, sizeof (SBITMAP_ELT_TYPE) * dst->size);
if (dst->popcount) if (dst->popcount)
...@@ -249,7 +247,7 @@ sbitmap_copy (sbitmap dst, sbitmap src) ...@@ -249,7 +247,7 @@ sbitmap_copy (sbitmap dst, sbitmap src)
/* Copy the first N elements of sbitmap SRC to DST. */ /* Copy the first N elements of sbitmap SRC to DST. */
void void
sbitmap_copy_n (sbitmap dst, sbitmap src, unsigned int n) sbitmap_copy_n (sbitmap dst, const_sbitmap src, unsigned int n)
{ {
memcpy (dst->elms, src->elms, sizeof (SBITMAP_ELT_TYPE) * n); memcpy (dst->elms, src->elms, sizeof (SBITMAP_ELT_TYPE) * n);
if (dst->popcount) if (dst->popcount)
...@@ -258,7 +256,7 @@ sbitmap_copy_n (sbitmap dst, sbitmap src, unsigned int n) ...@@ -258,7 +256,7 @@ sbitmap_copy_n (sbitmap dst, sbitmap src, unsigned int n)
/* Determine if a == b. */ /* Determine if a == b. */
int int
sbitmap_equal (sbitmap a, sbitmap b) sbitmap_equal (const_sbitmap a, const_sbitmap b)
{ {
return !memcmp (a->elms, b->elms, sizeof (SBITMAP_ELT_TYPE) * a->size); return !memcmp (a->elms, b->elms, sizeof (SBITMAP_ELT_TYPE) * a->size);
} }
...@@ -266,7 +264,7 @@ sbitmap_equal (sbitmap a, sbitmap b) ...@@ -266,7 +264,7 @@ sbitmap_equal (sbitmap a, sbitmap b)
/* Return true if the bitmap is empty. */ /* Return true if the bitmap is empty. */
bool bool
sbitmap_empty_p (sbitmap bmap) sbitmap_empty_p (const_sbitmap bmap)
{ {
unsigned int i; unsigned int i;
for (i=0; i<bmap->size; i++) for (i=0; i<bmap->size; i++)
...@@ -335,20 +333,20 @@ sbitmap_vector_ones (sbitmap *bmap, unsigned int n_vecs) ...@@ -335,20 +333,20 @@ sbitmap_vector_ones (sbitmap *bmap, unsigned int n_vecs)
Returns true if any change is made. */ Returns true if any change is made. */
bool bool
sbitmap_union_of_diff_cg (sbitmap dst, sbitmap a, sbitmap b, sbitmap c) sbitmap_union_of_diff_cg (sbitmap dst, const_sbitmap a, const_sbitmap b, const_sbitmap c)
{ {
unsigned int i, n = dst->size; unsigned int i, n = dst->size;
sbitmap_ptr dstp = dst->elms; sbitmap_ptr dstp = dst->elms;
sbitmap_ptr ap = a->elms; const_sbitmap_ptr ap = a->elms;
sbitmap_ptr bp = b->elms; const_sbitmap_ptr bp = b->elms;
sbitmap_ptr cp = c->elms; const_sbitmap_ptr cp = c->elms;
SBITMAP_ELT_TYPE changed = 0; SBITMAP_ELT_TYPE changed = 0;
gcc_assert (!dst->popcount); gcc_assert (!dst->popcount);
for (i = 0; i < n; i++) for (i = 0; i < n; i++)
{ {
SBITMAP_ELT_TYPE tmp = *ap++ | (*bp++ & ~*cp++); const SBITMAP_ELT_TYPE tmp = *ap++ | (*bp++ & ~*cp++);
changed |= *dstp ^ tmp; changed |= *dstp ^ tmp;
*dstp++ = tmp; *dstp++ = tmp;
} }
...@@ -357,13 +355,13 @@ sbitmap_union_of_diff_cg (sbitmap dst, sbitmap a, sbitmap b, sbitmap c) ...@@ -357,13 +355,13 @@ sbitmap_union_of_diff_cg (sbitmap dst, sbitmap a, sbitmap b, sbitmap c)
} }
void void
sbitmap_union_of_diff (sbitmap dst, sbitmap a, sbitmap b, sbitmap c) sbitmap_union_of_diff (sbitmap dst, const_sbitmap a, const_sbitmap b, const_sbitmap c)
{ {
unsigned int i, n = dst->size; unsigned int i, n = dst->size;
sbitmap_ptr dstp = dst->elms; sbitmap_ptr dstp = dst->elms;
sbitmap_ptr ap = a->elms; const_sbitmap_ptr ap = a->elms;
sbitmap_ptr bp = b->elms; const_sbitmap_ptr bp = b->elms;
sbitmap_ptr cp = c->elms; const_sbitmap_ptr cp = c->elms;
gcc_assert (!dst->popcount && !a->popcount gcc_assert (!dst->popcount && !a->popcount
&& !b->popcount && !c->popcount); && !b->popcount && !c->popcount);
...@@ -375,11 +373,11 @@ sbitmap_union_of_diff (sbitmap dst, sbitmap a, sbitmap b, sbitmap c) ...@@ -375,11 +373,11 @@ sbitmap_union_of_diff (sbitmap dst, sbitmap a, sbitmap b, sbitmap c)
/* Set bitmap DST to the bitwise negation of the bitmap SRC. */ /* Set bitmap DST to the bitwise negation of the bitmap SRC. */
void void
sbitmap_not (sbitmap dst, sbitmap src) sbitmap_not (sbitmap dst, const_sbitmap src)
{ {
unsigned int i, n = dst->size; unsigned int i, n = dst->size;
sbitmap_ptr dstp = dst->elms; sbitmap_ptr dstp = dst->elms;
sbitmap_ptr srcp = src->elms; const_sbitmap_ptr srcp = src->elms;
unsigned int last_bit; unsigned int last_bit;
gcc_assert (!dst->popcount); gcc_assert (!dst->popcount);
...@@ -398,13 +396,13 @@ sbitmap_not (sbitmap dst, sbitmap src) ...@@ -398,13 +396,13 @@ sbitmap_not (sbitmap dst, sbitmap src)
in A and the bits in B. i.e. dst = a & (~b). */ in A and the bits in B. i.e. dst = a & (~b). */
void void
sbitmap_difference (sbitmap dst, sbitmap a, sbitmap b) sbitmap_difference (sbitmap dst, const_sbitmap a, const_sbitmap b)
{ {
unsigned int i, dst_size = dst->size; unsigned int i, dst_size = dst->size;
unsigned int min_size = dst->size; unsigned int min_size = dst->size;
sbitmap_ptr dstp = dst->elms; sbitmap_ptr dstp = dst->elms;
sbitmap_ptr ap = a->elms; const_sbitmap_ptr ap = a->elms;
sbitmap_ptr bp = b->elms; const_sbitmap_ptr bp = b->elms;
gcc_assert (!dst->popcount); gcc_assert (!dst->popcount);
...@@ -427,10 +425,10 @@ sbitmap_difference (sbitmap dst, sbitmap a, sbitmap b) ...@@ -427,10 +425,10 @@ sbitmap_difference (sbitmap dst, sbitmap a, sbitmap b)
Return false otherwise. */ Return false otherwise. */
bool bool
sbitmap_any_common_bits (sbitmap a, sbitmap b) sbitmap_any_common_bits (const_sbitmap a, const_sbitmap b)
{ {
sbitmap_ptr ap = a->elms; const_sbitmap_ptr ap = a->elms;
sbitmap_ptr bp = b->elms; const_sbitmap_ptr bp = b->elms;
unsigned int i, n; unsigned int i, n;
n = MIN (a->size, b->size); n = MIN (a->size, b->size);
...@@ -445,19 +443,19 @@ sbitmap_any_common_bits (sbitmap a, sbitmap b) ...@@ -445,19 +443,19 @@ sbitmap_any_common_bits (sbitmap a, sbitmap b)
Return nonzero if any change is made. */ Return nonzero if any change is made. */
bool bool
sbitmap_a_and_b_cg (sbitmap dst, sbitmap a, sbitmap b) sbitmap_a_and_b_cg (sbitmap dst, const_sbitmap a, const_sbitmap b)
{ {
unsigned int i, n = dst->size; unsigned int i, n = dst->size;
sbitmap_ptr dstp = dst->elms; sbitmap_ptr dstp = dst->elms;
sbitmap_ptr ap = a->elms; const_sbitmap_ptr ap = a->elms;
sbitmap_ptr bp = b->elms; const_sbitmap_ptr bp = b->elms;
SBITMAP_ELT_TYPE changed = 0; SBITMAP_ELT_TYPE changed = 0;
gcc_assert (!dst->popcount); gcc_assert (!dst->popcount);
for (i = 0; i < n; i++) for (i = 0; i < n; i++)
{ {
SBITMAP_ELT_TYPE tmp = *ap++ & *bp++; const SBITMAP_ELT_TYPE tmp = *ap++ & *bp++;
changed |= *dstp ^ tmp; changed |= *dstp ^ tmp;
*dstp++ = tmp; *dstp++ = tmp;
} }
...@@ -466,18 +464,18 @@ sbitmap_a_and_b_cg (sbitmap dst, sbitmap a, sbitmap b) ...@@ -466,18 +464,18 @@ sbitmap_a_and_b_cg (sbitmap dst, sbitmap a, sbitmap b)
} }
void void
sbitmap_a_and_b (sbitmap dst, sbitmap a, sbitmap b) sbitmap_a_and_b (sbitmap dst, const_sbitmap a, const_sbitmap b)
{ {
unsigned int i, n = dst->size; unsigned int i, n = dst->size;
sbitmap_ptr dstp = dst->elms; sbitmap_ptr dstp = dst->elms;
sbitmap_ptr ap = a->elms; const_sbitmap_ptr ap = a->elms;
sbitmap_ptr bp = b->elms; const_sbitmap_ptr bp = b->elms;
bool has_popcount = dst->popcount != NULL; bool has_popcount = dst->popcount != NULL;
unsigned char *popcountp = dst->popcount; unsigned char *popcountp = dst->popcount;
for (i = 0; i < n; i++) for (i = 0; i < n; i++)
{ {
SBITMAP_ELT_TYPE tmp = *ap++ & *bp++; const SBITMAP_ELT_TYPE tmp = *ap++ & *bp++;
if (has_popcount) if (has_popcount)
{ {
bool wordchanged = (*dstp ^ tmp) != 0; bool wordchanged = (*dstp ^ tmp) != 0;
...@@ -497,19 +495,19 @@ sbitmap_a_and_b (sbitmap dst, sbitmap a, sbitmap b) ...@@ -497,19 +495,19 @@ sbitmap_a_and_b (sbitmap dst, sbitmap a, sbitmap b)
Return nonzero if any change is made. */ Return nonzero if any change is made. */
bool bool
sbitmap_a_xor_b_cg (sbitmap dst, sbitmap a, sbitmap b) sbitmap_a_xor_b_cg (sbitmap dst, const_sbitmap a, const_sbitmap b)
{ {
unsigned int i, n = dst->size; unsigned int i, n = dst->size;
sbitmap_ptr dstp = dst->elms; sbitmap_ptr dstp = dst->elms;
sbitmap_ptr ap = a->elms; const_sbitmap_ptr ap = a->elms;
sbitmap_ptr bp = b->elms; const_sbitmap_ptr bp = b->elms;
SBITMAP_ELT_TYPE changed = 0; SBITMAP_ELT_TYPE changed = 0;
gcc_assert (!dst->popcount); gcc_assert (!dst->popcount);
for (i = 0; i < n; i++) for (i = 0; i < n; i++)
{ {
SBITMAP_ELT_TYPE tmp = *ap++ ^ *bp++; const SBITMAP_ELT_TYPE tmp = *ap++ ^ *bp++;
changed |= *dstp ^ tmp; changed |= *dstp ^ tmp;
*dstp++ = tmp; *dstp++ = tmp;
} }
...@@ -518,18 +516,18 @@ sbitmap_a_xor_b_cg (sbitmap dst, sbitmap a, sbitmap b) ...@@ -518,18 +516,18 @@ sbitmap_a_xor_b_cg (sbitmap dst, sbitmap a, sbitmap b)
} }
void void
sbitmap_a_xor_b (sbitmap dst, sbitmap a, sbitmap b) sbitmap_a_xor_b (sbitmap dst, const_sbitmap a, const_sbitmap b)
{ {
unsigned int i, n = dst->size; unsigned int i, n = dst->size;
sbitmap_ptr dstp = dst->elms; sbitmap_ptr dstp = dst->elms;
sbitmap_ptr ap = a->elms; const_sbitmap_ptr ap = a->elms;
sbitmap_ptr bp = b->elms; const_sbitmap_ptr bp = b->elms;
bool has_popcount = dst->popcount != NULL; bool has_popcount = dst->popcount != NULL;
unsigned char *popcountp = dst->popcount; unsigned char *popcountp = dst->popcount;
for (i = 0; i < n; i++) for (i = 0; i < n; i++)
{ {
SBITMAP_ELT_TYPE tmp = *ap++ ^ *bp++; const SBITMAP_ELT_TYPE tmp = *ap++ ^ *bp++;
if (has_popcount) if (has_popcount)
{ {
bool wordchanged = (*dstp ^ tmp) != 0; bool wordchanged = (*dstp ^ tmp) != 0;
...@@ -549,19 +547,19 @@ sbitmap_a_xor_b (sbitmap dst, sbitmap a, sbitmap b) ...@@ -549,19 +547,19 @@ sbitmap_a_xor_b (sbitmap dst, sbitmap a, sbitmap b)
Return nonzero if any change is made. */ Return nonzero if any change is made. */
bool bool
sbitmap_a_or_b_cg (sbitmap dst, sbitmap a, sbitmap b) sbitmap_a_or_b_cg (sbitmap dst, const_sbitmap a, const_sbitmap b)
{ {
unsigned int i, n = dst->size; unsigned int i, n = dst->size;
sbitmap_ptr dstp = dst->elms; sbitmap_ptr dstp = dst->elms;
sbitmap_ptr ap = a->elms; const_sbitmap_ptr ap = a->elms;
sbitmap_ptr bp = b->elms; const_sbitmap_ptr bp = b->elms;
SBITMAP_ELT_TYPE changed = 0; SBITMAP_ELT_TYPE changed = 0;
gcc_assert (!dst->popcount); gcc_assert (!dst->popcount);
for (i = 0; i < n; i++) for (i = 0; i < n; i++)
{ {
SBITMAP_ELT_TYPE tmp = *ap++ | *bp++; const SBITMAP_ELT_TYPE tmp = *ap++ | *bp++;
changed |= *dstp ^ tmp; changed |= *dstp ^ tmp;
*dstp++ = tmp; *dstp++ = tmp;
} }
...@@ -570,18 +568,18 @@ sbitmap_a_or_b_cg (sbitmap dst, sbitmap a, sbitmap b) ...@@ -570,18 +568,18 @@ sbitmap_a_or_b_cg (sbitmap dst, sbitmap a, sbitmap b)
} }
void void
sbitmap_a_or_b (sbitmap dst, sbitmap a, sbitmap b) sbitmap_a_or_b (sbitmap dst, const_sbitmap a, const_sbitmap b)
{ {
unsigned int i, n = dst->size; unsigned int i, n = dst->size;
sbitmap_ptr dstp = dst->elms; sbitmap_ptr dstp = dst->elms;
sbitmap_ptr ap = a->elms; const_sbitmap_ptr ap = a->elms;
sbitmap_ptr bp = b->elms; const_sbitmap_ptr bp = b->elms;
bool has_popcount = dst->popcount != NULL; bool has_popcount = dst->popcount != NULL;
unsigned char *popcountp = dst->popcount; unsigned char *popcountp = dst->popcount;
for (i = 0; i < n; i++) for (i = 0; i < n; i++)
{ {
SBITMAP_ELT_TYPE tmp = *ap++ | *bp++; const SBITMAP_ELT_TYPE tmp = *ap++ | *bp++;
if (has_popcount) if (has_popcount)
{ {
bool wordchanged = (*dstp ^ tmp) != 0; bool wordchanged = (*dstp ^ tmp) != 0;
...@@ -600,10 +598,10 @@ sbitmap_a_or_b (sbitmap dst, sbitmap a, sbitmap b) ...@@ -600,10 +598,10 @@ sbitmap_a_or_b (sbitmap dst, sbitmap a, sbitmap b)
/* Return nonzero if A is a subset of B. */ /* Return nonzero if A is a subset of B. */
bool bool
sbitmap_a_subset_b_p (sbitmap a, sbitmap b) sbitmap_a_subset_b_p (const_sbitmap a, const_sbitmap b)
{ {
unsigned int i, n = a->size; unsigned int i, n = a->size;
sbitmap_ptr ap, bp; const_sbitmap_ptr ap, bp;
for (ap = a->elms, bp = b->elms, i = 0; i < n; i++, ap++, bp++) for (ap = a->elms, bp = b->elms, i = 0; i < n; i++, ap++, bp++)
if ((*ap | *bp) != *bp) if ((*ap | *bp) != *bp)
...@@ -616,20 +614,20 @@ sbitmap_a_subset_b_p (sbitmap a, sbitmap b) ...@@ -616,20 +614,20 @@ sbitmap_a_subset_b_p (sbitmap a, sbitmap b)
Return nonzero if any change is made. */ Return nonzero if any change is made. */
bool bool
sbitmap_a_or_b_and_c_cg (sbitmap dst, sbitmap a, sbitmap b, sbitmap c) sbitmap_a_or_b_and_c_cg (sbitmap dst, const_sbitmap a, const_sbitmap b, const_sbitmap c)
{ {
unsigned int i, n = dst->size; unsigned int i, n = dst->size;
sbitmap_ptr dstp = dst->elms; sbitmap_ptr dstp = dst->elms;
sbitmap_ptr ap = a->elms; const_sbitmap_ptr ap = a->elms;
sbitmap_ptr bp = b->elms; const_sbitmap_ptr bp = b->elms;
sbitmap_ptr cp = c->elms; const_sbitmap_ptr cp = c->elms;
SBITMAP_ELT_TYPE changed = 0; SBITMAP_ELT_TYPE changed = 0;
gcc_assert (!dst->popcount); gcc_assert (!dst->popcount);
for (i = 0; i < n; i++) for (i = 0; i < n; i++)
{ {
SBITMAP_ELT_TYPE tmp = *ap++ | (*bp++ & *cp++); const SBITMAP_ELT_TYPE tmp = *ap++ | (*bp++ & *cp++);
changed |= *dstp ^ tmp; changed |= *dstp ^ tmp;
*dstp++ = tmp; *dstp++ = tmp;
} }
...@@ -638,13 +636,13 @@ sbitmap_a_or_b_and_c_cg (sbitmap dst, sbitmap a, sbitmap b, sbitmap c) ...@@ -638,13 +636,13 @@ sbitmap_a_or_b_and_c_cg (sbitmap dst, sbitmap a, sbitmap b, sbitmap c)
} }
void void
sbitmap_a_or_b_and_c (sbitmap dst, sbitmap a, sbitmap b, sbitmap c) sbitmap_a_or_b_and_c (sbitmap dst, const_sbitmap a, const_sbitmap b, const_sbitmap c)
{ {
unsigned int i, n = dst->size; unsigned int i, n = dst->size;
sbitmap_ptr dstp = dst->elms; sbitmap_ptr dstp = dst->elms;
sbitmap_ptr ap = a->elms; const_sbitmap_ptr ap = a->elms;
sbitmap_ptr bp = b->elms; const_sbitmap_ptr bp = b->elms;
sbitmap_ptr cp = c->elms; const_sbitmap_ptr cp = c->elms;
gcc_assert (!dst->popcount); gcc_assert (!dst->popcount);
...@@ -656,20 +654,20 @@ sbitmap_a_or_b_and_c (sbitmap dst, sbitmap a, sbitmap b, sbitmap c) ...@@ -656,20 +654,20 @@ sbitmap_a_or_b_and_c (sbitmap dst, sbitmap a, sbitmap b, sbitmap c)
Return nonzero if any change is made. */ Return nonzero if any change is made. */
bool bool
sbitmap_a_and_b_or_c_cg (sbitmap dst, sbitmap a, sbitmap b, sbitmap c) sbitmap_a_and_b_or_c_cg (sbitmap dst, const_sbitmap a, const_sbitmap b, const_sbitmap c)
{ {
unsigned int i, n = dst->size; unsigned int i, n = dst->size;
sbitmap_ptr dstp = dst->elms; sbitmap_ptr dstp = dst->elms;
sbitmap_ptr ap = a->elms; const_sbitmap_ptr ap = a->elms;
sbitmap_ptr bp = b->elms; const_sbitmap_ptr bp = b->elms;
sbitmap_ptr cp = c->elms; const_sbitmap_ptr cp = c->elms;
SBITMAP_ELT_TYPE changed = 0; SBITMAP_ELT_TYPE changed = 0;
gcc_assert (!dst->popcount); gcc_assert (!dst->popcount);
for (i = 0; i < n; i++) for (i = 0; i < n; i++)
{ {
SBITMAP_ELT_TYPE tmp = *ap++ & (*bp++ | *cp++); const SBITMAP_ELT_TYPE tmp = *ap++ & (*bp++ | *cp++);
changed |= *dstp ^ tmp; changed |= *dstp ^ tmp;
*dstp++ = tmp; *dstp++ = tmp;
} }
...@@ -678,13 +676,13 @@ sbitmap_a_and_b_or_c_cg (sbitmap dst, sbitmap a, sbitmap b, sbitmap c) ...@@ -678,13 +676,13 @@ sbitmap_a_and_b_or_c_cg (sbitmap dst, sbitmap a, sbitmap b, sbitmap c)
} }
void void
sbitmap_a_and_b_or_c (sbitmap dst, sbitmap a, sbitmap b, sbitmap c) sbitmap_a_and_b_or_c (sbitmap dst, const_sbitmap a, const_sbitmap b, const_sbitmap c)
{ {
unsigned int i, n = dst->size; unsigned int i, n = dst->size;
sbitmap_ptr dstp = dst->elms; sbitmap_ptr dstp = dst->elms;
sbitmap_ptr ap = a->elms; const_sbitmap_ptr ap = a->elms;
sbitmap_ptr bp = b->elms; const_sbitmap_ptr bp = b->elms;
sbitmap_ptr cp = c->elms; const_sbitmap_ptr cp = c->elms;
for (i = 0; i < n; i++) for (i = 0; i < n; i++)
*dstp++ = *ap++ & (*bp++ | *cp++); *dstp++ = *ap++ & (*bp++ | *cp++);
...@@ -863,7 +861,7 @@ sbitmap_union_of_preds (sbitmap dst, sbitmap *src, int bb) ...@@ -863,7 +861,7 @@ sbitmap_union_of_preds (sbitmap dst, sbitmap *src, int bb)
/* Return number of first bit set in the bitmap, -1 if none. */ /* Return number of first bit set in the bitmap, -1 if none. */
int int
sbitmap_first_set_bit (sbitmap bmap) sbitmap_first_set_bit (const_sbitmap bmap)
{ {
unsigned int n = 0; unsigned int n = 0;
sbitmap_iterator sbi; sbitmap_iterator sbi;
...@@ -876,14 +874,14 @@ sbitmap_first_set_bit (sbitmap bmap) ...@@ -876,14 +874,14 @@ sbitmap_first_set_bit (sbitmap bmap)
/* Return number of last bit set in the bitmap, -1 if none. */ /* Return number of last bit set in the bitmap, -1 if none. */
int int
sbitmap_last_set_bit (sbitmap bmap) sbitmap_last_set_bit (const_sbitmap bmap)
{ {
int i; int i;
SBITMAP_ELT_TYPE *ptr = bmap->elms; const SBITMAP_ELT_TYPE *const ptr = bmap->elms;
for (i = bmap->size - 1; i >= 0; i--) for (i = bmap->size - 1; i >= 0; i--)
{ {
SBITMAP_ELT_TYPE word = ptr[i]; const SBITMAP_ELT_TYPE word = ptr[i];
if (word != 0) if (word != 0)
{ {
...@@ -906,7 +904,7 @@ sbitmap_last_set_bit (sbitmap bmap) ...@@ -906,7 +904,7 @@ sbitmap_last_set_bit (sbitmap bmap)
} }
void void
dump_sbitmap (FILE *file, sbitmap bmap) dump_sbitmap (FILE *file, const_sbitmap bmap)
{ {
unsigned int i, n, j; unsigned int i, n, j;
unsigned int set_size = bmap->size; unsigned int set_size = bmap->size;
...@@ -927,7 +925,7 @@ dump_sbitmap (FILE *file, sbitmap bmap) ...@@ -927,7 +925,7 @@ dump_sbitmap (FILE *file, sbitmap bmap)
} }
void void
dump_sbitmap_file (FILE *file, sbitmap bmap) dump_sbitmap_file (FILE *file, const_sbitmap bmap)
{ {
unsigned int i, pos; unsigned int i, pos;
...@@ -950,7 +948,7 @@ dump_sbitmap_file (FILE *file, sbitmap bmap) ...@@ -950,7 +948,7 @@ dump_sbitmap_file (FILE *file, sbitmap bmap)
} }
void void
debug_sbitmap (sbitmap bmap) debug_sbitmap (const_sbitmap bmap)
{ {
dump_sbitmap_file (stderr, bmap); dump_sbitmap_file (stderr, bmap);
} }
...@@ -973,7 +971,7 @@ dump_sbitmap_vector (FILE *file, const char *title, const char *subtitle, ...@@ -973,7 +971,7 @@ dump_sbitmap_vector (FILE *file, const char *title, const char *subtitle,
#if GCC_VERSION < 3400 #if GCC_VERSION < 3400
/* Table of number of set bits in a character, indexed by value of char. */ /* Table of number of set bits in a character, indexed by value of char. */
static unsigned char popcount_table[] = static const unsigned char popcount_table[] =
{ {
0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,1,2,2,3,2,3,3,4,2,3,3,4,3,4,4,5, 0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,1,2,2,3,2,3,3,4,2,3,3,4,3,4,4,5,
1,2,2,3,2,3,3,4,2,3,3,4,3,4,4,5,2,3,3,4,3,4,4,5,3,4,4,5,4,5,5,6, 1,2,2,3,2,3,3,4,2,3,3,4,3,4,4,5,2,3,3,4,3,4,4,5,3,4,4,5,4,5,5,6,
...@@ -1006,7 +1004,7 @@ sbitmap_elt_popcount (SBITMAP_ELT_TYPE a) ...@@ -1006,7 +1004,7 @@ sbitmap_elt_popcount (SBITMAP_ELT_TYPE a)
/* Count the number of bits in SBITMAP a, up to bit MAXBIT. */ /* Count the number of bits in SBITMAP a, up to bit MAXBIT. */
unsigned long unsigned long
sbitmap_popcount (sbitmap a, unsigned long maxbit) sbitmap_popcount (const_sbitmap a, unsigned long maxbit)
{ {
unsigned long count = 0; unsigned long count = 0;
unsigned ix; unsigned ix;
......
...@@ -44,8 +44,10 @@ typedef struct simple_bitmap_def ...@@ -44,8 +44,10 @@ typedef struct simple_bitmap_def
unsigned int size; /* Size in elements. */ unsigned int size; /* Size in elements. */
SBITMAP_ELT_TYPE elms[1]; /* The elements. */ SBITMAP_ELT_TYPE elms[1]; /* The elements. */
} *sbitmap; } *sbitmap;
typedef const struct simple_bitmap_def *const_sbitmap;
typedef SBITMAP_ELT_TYPE *sbitmap_ptr; typedef SBITMAP_ELT_TYPE *sbitmap_ptr;
typedef const SBITMAP_ELT_TYPE *const_sbitmap_ptr;
/* Return the set size needed for N elements. */ /* Return the set size needed for N elements. */
#define SBITMAP_SET_SIZE(N) (((N) + SBITMAP_ELT_BITS - 1) / SBITMAP_ELT_BITS) #define SBITMAP_SET_SIZE(N) (((N) + SBITMAP_ELT_BITS - 1) / SBITMAP_ELT_BITS)
...@@ -94,7 +96,7 @@ RESET_BIT (sbitmap map, unsigned int bitno) ...@@ -94,7 +96,7 @@ RESET_BIT (sbitmap map, unsigned int bitno)
/* The iterator for sbitmap. */ /* The iterator for sbitmap. */
typedef struct { typedef struct {
/* The pointer to the first word of the bitmap. */ /* The pointer to the first word of the bitmap. */
SBITMAP_ELT_TYPE *ptr; const SBITMAP_ELT_TYPE *ptr;
/* The size of the bitmap. */ /* The size of the bitmap. */
unsigned int size; unsigned int size;
...@@ -113,7 +115,7 @@ typedef struct { ...@@ -113,7 +115,7 @@ typedef struct {
MIN. */ MIN. */
static inline void static inline void
sbitmap_iter_init (sbitmap_iterator *i, sbitmap bmp, unsigned int min) sbitmap_iter_init (sbitmap_iterator *i, const_sbitmap bmp, unsigned int min)
{ {
i->word_num = min / (unsigned int) SBITMAP_ELT_BITS; i->word_num = min / (unsigned int) SBITMAP_ELT_BITS;
i->bit_num = min; i->bit_num = min;
...@@ -206,42 +208,42 @@ do { \ ...@@ -206,42 +208,42 @@ do { \
struct int_list; struct int_list;
extern void dump_sbitmap (FILE *, sbitmap); extern void dump_sbitmap (FILE *, const_sbitmap);
extern void dump_sbitmap_file (FILE *, sbitmap); extern void dump_sbitmap_file (FILE *, const_sbitmap);
extern void dump_sbitmap_vector (FILE *, const char *, const char *, sbitmap *, extern void dump_sbitmap_vector (FILE *, const char *, const char *, sbitmap *,
int); int);
extern sbitmap sbitmap_alloc (unsigned int); extern sbitmap sbitmap_alloc (unsigned int);
extern sbitmap sbitmap_alloc_with_popcount (unsigned int); extern sbitmap sbitmap_alloc_with_popcount (unsigned int);
extern sbitmap *sbitmap_vector_alloc (unsigned int, unsigned int); extern sbitmap *sbitmap_vector_alloc (unsigned int, unsigned int);
extern sbitmap sbitmap_resize (sbitmap, unsigned int, int); extern sbitmap sbitmap_resize (sbitmap, unsigned int, int);
extern void sbitmap_copy (sbitmap, sbitmap); extern void sbitmap_copy (sbitmap, const_sbitmap);
extern void sbitmap_copy_n (sbitmap, sbitmap, unsigned int); extern void sbitmap_copy_n (sbitmap, const_sbitmap, unsigned int);
extern int sbitmap_equal (sbitmap, sbitmap); extern int sbitmap_equal (const_sbitmap, const_sbitmap);
extern bool sbitmap_empty_p (sbitmap); extern bool sbitmap_empty_p (const_sbitmap);
extern void sbitmap_zero (sbitmap); extern void sbitmap_zero (sbitmap);
extern void sbitmap_ones (sbitmap); extern void sbitmap_ones (sbitmap);
extern void sbitmap_vector_zero (sbitmap *, unsigned int); extern void sbitmap_vector_zero (sbitmap *, unsigned int);
extern void sbitmap_vector_ones (sbitmap *, unsigned int); extern void sbitmap_vector_ones (sbitmap *, unsigned int);
extern void sbitmap_union_of_diff (sbitmap, sbitmap, sbitmap, sbitmap); extern void sbitmap_union_of_diff (sbitmap, const_sbitmap, const_sbitmap, const_sbitmap);
extern bool sbitmap_union_of_diff_cg (sbitmap, sbitmap, sbitmap, sbitmap); extern bool sbitmap_union_of_diff_cg (sbitmap, const_sbitmap, const_sbitmap, const_sbitmap);
extern void sbitmap_difference (sbitmap, sbitmap, sbitmap); extern void sbitmap_difference (sbitmap, const_sbitmap, const_sbitmap);
extern void sbitmap_not (sbitmap, sbitmap); extern void sbitmap_not (sbitmap, const_sbitmap);
extern void sbitmap_a_or_b_and_c (sbitmap, sbitmap, sbitmap, sbitmap); extern void sbitmap_a_or_b_and_c (sbitmap, const_sbitmap, const_sbitmap, const_sbitmap);
extern bool sbitmap_a_or_b_and_c_cg (sbitmap, sbitmap, sbitmap, sbitmap); extern bool sbitmap_a_or_b_and_c_cg (sbitmap, const_sbitmap, const_sbitmap, const_sbitmap);
extern void sbitmap_a_and_b_or_c (sbitmap, sbitmap, sbitmap, sbitmap); extern void sbitmap_a_and_b_or_c (sbitmap, const_sbitmap, const_sbitmap, const_sbitmap);
extern bool sbitmap_a_and_b_or_c_cg (sbitmap, sbitmap, sbitmap, sbitmap); extern bool sbitmap_a_and_b_or_c_cg (sbitmap, const_sbitmap, const_sbitmap, const_sbitmap);
extern bool sbitmap_any_common_bits (sbitmap, sbitmap); extern bool sbitmap_any_common_bits (const_sbitmap, const_sbitmap);
extern void sbitmap_a_and_b (sbitmap, sbitmap, sbitmap); extern void sbitmap_a_and_b (sbitmap, const_sbitmap, const_sbitmap);
extern bool sbitmap_a_and_b_cg (sbitmap, sbitmap, sbitmap); extern bool sbitmap_a_and_b_cg (sbitmap, const_sbitmap, const_sbitmap);
extern void sbitmap_a_or_b (sbitmap, sbitmap, sbitmap); extern void sbitmap_a_or_b (sbitmap, const_sbitmap, const_sbitmap);
extern bool sbitmap_a_or_b_cg (sbitmap, sbitmap, sbitmap); extern bool sbitmap_a_or_b_cg (sbitmap, const_sbitmap, const_sbitmap);
extern void sbitmap_a_xor_b (sbitmap, sbitmap, sbitmap); extern void sbitmap_a_xor_b (sbitmap, const_sbitmap, const_sbitmap);
extern bool sbitmap_a_xor_b_cg (sbitmap, sbitmap, sbitmap); extern bool sbitmap_a_xor_b_cg (sbitmap, const_sbitmap, const_sbitmap);
extern bool sbitmap_a_subset_b_p (sbitmap, sbitmap); extern bool sbitmap_a_subset_b_p (const_sbitmap, const_sbitmap);
extern int sbitmap_first_set_bit (sbitmap); extern int sbitmap_first_set_bit (const_sbitmap);
extern int sbitmap_last_set_bit (sbitmap); extern int sbitmap_last_set_bit (const_sbitmap);
extern void sbitmap_intersect_of_predsucc (sbitmap, sbitmap *, int, extern void sbitmap_intersect_of_predsucc (sbitmap, sbitmap *, int,
struct int_list **); struct int_list **);
...@@ -261,8 +263,8 @@ extern void sbitmap_intersection_of_preds (sbitmap, sbitmap *, int); ...@@ -261,8 +263,8 @@ extern void sbitmap_intersection_of_preds (sbitmap, sbitmap *, int);
extern void sbitmap_union_of_succs (sbitmap, sbitmap *, int); extern void sbitmap_union_of_succs (sbitmap, sbitmap *, int);
extern void sbitmap_union_of_preds (sbitmap, sbitmap *, int); extern void sbitmap_union_of_preds (sbitmap, sbitmap *, int);
extern void debug_sbitmap (sbitmap); extern void debug_sbitmap (const_sbitmap);
extern sbitmap sbitmap_realloc (sbitmap, unsigned int); extern sbitmap sbitmap_realloc (sbitmap, unsigned int);
extern unsigned long sbitmap_popcount(sbitmap, unsigned long); extern unsigned long sbitmap_popcount(const_sbitmap, unsigned long);
extern void sbitmap_verify_popcount (sbitmap); extern void sbitmap_verify_popcount (const_sbitmap);
#endif /* ! GCC_SBITMAP_H */ #endif /* ! GCC_SBITMAP_H */
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