From: Trevor Saunders <tbsaunde+...@tbsaunde.org> This makes the sbitmap version return true if the bit was previously unset to make it similar to the bitmap version.
I believe I fixed up the comments from may, and rebootstrapped + regtested ppc64le-linux-gnu, ok? Trev gcc/ChangeLog: 2017-07-20 Trevor Saunders <tbsaunde+...@tbsaunde.org> * sbitmap.h (bitmap_set_bit): Return bool similar to bitmap version of this function. --- gcc/ChangeLog | 5 +++++ gcc/sbitmap.h | 12 ++++++++---- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index ef0e7881073..8d171b1a8a5 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2017-07-20 Trevor Saunders <tbsaunde+...@tbsaunde.org> + + * sbitmap.h (bitmap_set_bit): Return bool similar to bitmap + version of this function. + 2017-07-18 Uros Bizjak <ubiz...@gmail.com> PR target/81471 diff --git a/gcc/sbitmap.h b/gcc/sbitmap.h index ce4d27d927c..6f90fc877d4 100644 --- a/gcc/sbitmap.h +++ b/gcc/sbitmap.h @@ -104,13 +104,17 @@ bitmap_bit_p (const_sbitmap map, int bitno) return (map->elms[i] >> s) & (SBITMAP_ELT_TYPE) 1; } -/* Set bit number BITNO in the sbitmap MAP. */ +/* Set bit number BITNO in the sbitmap MAP. Return true if it was + previously unset. */ -static inline void +static inline bool bitmap_set_bit (sbitmap map, int bitno) { - map->elms[bitno / SBITMAP_ELT_BITS] - |= (SBITMAP_ELT_TYPE) 1 << (bitno) % SBITMAP_ELT_BITS; + SBITMAP_ELT_TYPE *word = &map->elms[bitno / SBITMAP_ELT_BITS]; + SBITMAP_ELT_TYPE mask = (SBITMAP_ELT_TYPE) 1 << (bitno) % SBITMAP_ELT_BITS; + bool ret = (*word & mask) == 0; + *word |= mask; + return ret; } /* Reset bit number BITNO in the sbitmap MAP. */ -- 2.11.0