On Fri, 7 Oct 2016, Richard Biener wrote:

> I think the main issue is that it is not documented what is safe to do
> (and what are the results) when you modify a bitmap while you are
> iterating over it.

Does the following look ok?

Thanks,
Richard.

2016-10-07  Richard Biener  <rguent...@suse.de>

        * bitmap.h: Document constraints on bitmap modification while
        iterating over it.

Index: gcc/bitmap.h
===================================================================
--- gcc/bitmap.h        (revision 240859)
+++ gcc/bitmap.h        (working copy)
@@ -755,6 +755,18 @@ bmp_iter_and_compl (bitmap_iterator *bi,
     }
 }
 
+/* If you are modifying a bitmap you are currently iterating over you
+   have to ensure to
+     - never remove the current bit;
+     - if you set or clear a bit before the current bit this operation
+       will not affect the set of bits you are visiting during the iteration;
+     - if you set or clear a bit after the current bit it is unspecified
+       whether that affects the set of bits you are visiting during the
+       iteration.
+   If you want to remove the current bit you can delay this to the next
+   iteration (and after the iteration in case the last iteration is
+   affected).  */
+
 /* Loop over all bits set in BITMAP, starting with MIN and setting
    BITNUM to the bit number.  ITER is a bitmap iterator.  BITNUM
    should be treated as a read-only variable as it contains loop

Reply via email to