diff mbox

[RFC] Wrong "current" pointers with bitmap_ior and bitmap_ior_and_compl

Message ID 20141129.072508.40634019.kkojima@rr.iij4u.or.jp
State New
Headers show

Commit Message

Kaz Kojima Nov. 28, 2014, 10:25 p.m. UTC
Mike Stump <mrs@mrs.kithrup.com> wrote:
> While I had testing on my target, there were plenty of other regressions
> from trunk intermixed, so I wanted to do a normal bootstrap on Linux which
> I had not done yet.  Kaz, you can check your patch, if the same, pretty
> sure it is, it has been approved and you can just check your version in,
> since you have the testing on it.  Richard didn't want the extra testing
> my patch.

I've confirmed that the patches only differ by the extra checking
hunk and committed the patch below with your ChangeLog entry.

Regards,
	kaz
--
2014-11-28  Mike Stump  <mikestump@comcast.net>

	* bitmap.c (bitmap_ior): Zap current as it could be deleted.
	(bitmap_ior_and_compl): Likewise.
diff mbox

Patch

diff --git a/bitmap.c b/bitmap.c
index 8f7f306..ace6aea 100644
--- a/bitmap.c
+++ b/bitmap.c
@@ -1595,6 +1595,8 @@  bitmap_ior (bitmap dst, const_bitmap a, const_bitmap b)
   if (dst_elt)
     {
       changed = true;
+      /* Ensure that dst->current is valid.  */
+      dst->current = dst->first;
       bitmap_elt_clear_from (dst, dst_elt);
     }
   gcc_checking_assert (!dst->current == !dst->first);
@@ -1951,6 +1953,8 @@  bitmap_ior_and_compl (bitmap dst, const_bitmap a, const_bitmap b, const_bitmap k
   if (dst_elt)
     {
       changed = true;
+      /* Ensure that dst->current is valid.  */
+      dst->current = dst->first;
       bitmap_elt_clear_from (dst, dst_elt);
     }
   gcc_checking_assert (!dst->current == !dst->first);