diff options
author | Nicolas Benoit <nbenoit@tuxfamily.org> | 2010-02-26 01:51:27 +0000 |
---|---|---|
committer | Diego Novillo <dnovillo@gcc.gnu.org> | 2010-02-25 20:51:27 -0500 |
commit | 4b9c60758401aedf9e992c588f595e7ecf1a5235 (patch) | |
tree | f70b6f2552f3c55b066b3787991d366798284980 /gcc | |
parent | cac1c927c24a07197df05f022196edcc180a1347 (diff) | |
download | gcc-4b9c60758401aedf9e992c588f595e7ecf1a5235.zip gcc-4b9c60758401aedf9e992c588f595e7ecf1a5235.tar.gz gcc-4b9c60758401aedf9e992c588f595e7ecf1a5235.tar.bz2 |
ebitmap.c: Change calls to verify_popcount with calls to sbitmap_verify_popcount.
2010-02-25 Nicolas Benoit <nbenoit@tuxfamily.org>
* ebitmap.c: Change calls to verify_popcount with calls to
sbitmap_verify_popcount.
(ebitmap_clear_bit): Fixed map->cacheindex test and
map>cache update when bit clearing results in an empty
element.
From-SVN: r157080
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 8 | ||||
-rw-r--r-- | gcc/ebitmap.c | 23 |
2 files changed, 22 insertions, 9 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 307b0a8..62885ce 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,11 @@ +2010-02-25 Nicolas Benoit <nbenoit@tuxfamily.org> + + * ebitmap.c: Change calls to verify_popcount with calls to + sbitmap_verify_popcount. + (ebitmap_clear_bit): Fixed map->cacheindex test and + map>cache update when bit clearing results in an empty + element. + 2010-02-25 Michael Meissner <meissner@linux.vnet.ibm.com> PR target/43154 diff --git a/gcc/ebitmap.c b/gcc/ebitmap.c index 472ff2e..64c5634 100644 --- a/gcc/ebitmap.c +++ b/gcc/ebitmap.c @@ -1,5 +1,5 @@ /* Sparse array-based bitmaps. - Copyright (C) 2007, 2008 Free Software Foundation, Inc. + Copyright (C) 2007, 2008, 2009, 2010 Free Software Foundation, Inc. Contributed by Daniel Berlin <dberlin@dberlin.org> This file is part of GCC. @@ -254,8 +254,13 @@ ebitmap_clear_bit (ebitmap map, unsigned int bit) if (!have_eltwordindex) eltwordindex = sbitmap_popcount (map->wordmask, wordindex); - if (map->cache != NULL && map->cacheindex == eltwordindex) - map->cache = NULL; + if (map->cache != NULL) + { + if (map->cacheindex == wordindex) + map->cache = NULL; + else if (map->cacheindex > wordindex) + map->cache = map->cache - 1; + } RESET_BIT (map->wordmask, wordindex); @@ -457,7 +462,7 @@ ebitmap_and_into (ebitmap dst, ebitmap src) for (i = 0; i < dst->numwords; i++) gcc_assert (dst->elts[i] != 0); - verify_popcount (dst->wordmask); + sbitmap_verify_popcount (dst->wordmask); gcc_assert (sbitmap_popcount (dst->wordmask, dst->wordmask->n_bits) == dst->numwords); } @@ -529,7 +534,7 @@ ebitmap_and (ebitmap dst, ebitmap src1, ebitmap src2) for (i = 0; i < dst->numwords; i++) gcc_assert (dst->elts[i] != 0); - verify_popcount (dst->wordmask); + sbitmap_verify_popcount (dst->wordmask); gcc_assert (sbitmap_popcount (dst->wordmask, dst->wordmask->n_bits) == dst->numwords); } @@ -652,7 +657,7 @@ ebitmap_ior_into (ebitmap dst, ebitmap src) EXECUTE_IF_SET_IN_EBITMAP (dstcopy, 0, i, ebi) gcc_assert (ebitmap_bit_p (dst, i)); - verify_popcount (dst->wordmask); + sbitmap_verify_popcount (dst->wordmask); gcc_assert (changed == !ebitmap_equal_p (dst, dstcopy)); gcc_assert (sbitmap_popcount (dst->wordmask, dst->wordmask->n_bits) == dst->numwords); @@ -772,7 +777,7 @@ ebitmap_ior (ebitmap dst, ebitmap src1, ebitmap src2) EXECUTE_IF_SET_IN_EBITMAP (src2, 0, i, ebi) gcc_assert (ebitmap_bit_p (dst, i)); } - verify_popcount (dst->wordmask); + sbitmap_verify_popcount (dst->wordmask); gcc_assert (changed == !ebitmap_equal_p (dst, dstcopy)); gcc_assert (sbitmap_popcount (dst->wordmask, dst->wordmask->n_bits) == dst->numwords); @@ -848,7 +853,7 @@ ebitmap_and_compl_into (ebitmap dst, ebitmap src) gcc_assert (sbitmap_popcount (dst->wordmask, dst->wordmask->n_bits) == neweltindex); - verify_popcount (dst->wordmask); + sbitmap_verify_popcount (dst->wordmask); gcc_assert (changed == !ebitmap_equal_p (dst, dstcopy)); gcc_assert (sbitmap_popcount (dst->wordmask, dst->wordmask->n_bits) == dst->numwords); @@ -950,7 +955,7 @@ ebitmap_and_compl (ebitmap dst, ebitmap src1, ebitmap src2) for (i = 0; i < dst->numwords; i++) gcc_assert (dst->elts[i] != 0); - verify_popcount (dst->wordmask); + sbitmap_verify_popcount (dst->wordmask); gcc_assert (sbitmap_popcount (dst->wordmask, dst->wordmask->n_bits) == dst->numwords); } |