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