aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorNicolas Benoit <nbenoit@tuxfamily.org>2010-02-26 01:51:27 +0000
committerDiego Novillo <dnovillo@gcc.gnu.org>2010-02-25 20:51:27 -0500
commit4b9c60758401aedf9e992c588f595e7ecf1a5235 (patch)
treef70b6f2552f3c55b066b3787991d366798284980 /gcc
parentcac1c927c24a07197df05f022196edcc180a1347 (diff)
downloadgcc-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/ChangeLog8
-rw-r--r--gcc/ebitmap.c23
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);
}