bitmap.h: Document constraints on bitmap modification while iterating over it.
authorRichard Biener <rguenther@suse.de>
Fri, 7 Oct 2016 11:26:15 +0000 (11:26 +0000)
committerRichard Biener <rguenth@gcc.gnu.org>
Fri, 7 Oct 2016 11:26:15 +0000 (11:26 +0000)
2016-10-07  Richard Biener  <rguenther@suse.de>

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

From-SVN: r240860

gcc/ChangeLog
gcc/bitmap.h

index 56e5fd9a1b5e4f1f7d50cfa79992b8c7ddeec98c..15315eb39eb6fadecd0c4a53b10cd0a8ca5c1393 100644 (file)
@@ -1,3 +1,8 @@
+2016-10-07  Richard Biener  <rguenther@suse.de>
+
+       * bitmap.h: Document constraints on bitmap modification while
+       iterating over it.
+
 2016-10-07  Richard Biener  <rguenther@suse.de>
 
        * bitmap.c (bitmap_elem_to_freelist): Set indx to -1.
index e4e80d6ce5dab91baa412b047e1aa9ab01f17f8c..1b2c8e0c13c64f7ca2765ac20982e8d5580a1bc1 100644 (file)
@@ -755,6 +755,18 @@ bmp_iter_and_compl (bitmap_iterator *bi, unsigned *bit_no)
     }
 }
 
+/* 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