From: Jason Ekstrand Date: Wed, 1 May 2019 10:31:11 +0000 (-0500) Subject: util/bitset: Return an actual bool from test macros X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=bf774b56be46d5812868d9f6e7e63437d36754e0;p=mesa.git util/bitset: Return an actual bool from test macros I want to be able to do BITSET_TEST() != BITSET_TEST() and this isn't currently possible because BITSET_TEST() returns a random bit. Compare to zero to get an actual Boolean. Reviewed-by: Eric Engestrom Reviewed-by: Ian Romanick --- diff --git a/src/util/bitset.h b/src/util/bitset.h index 3b18abac793..e610d5f897e 100644 --- a/src/util/bitset.h +++ b/src/util/bitset.h @@ -58,7 +58,7 @@ /* single bit operations */ -#define BITSET_TEST(x, b) ((x)[BITSET_BITWORD(b)] & BITSET_BIT(b)) +#define BITSET_TEST(x, b) (((x)[BITSET_BITWORD(b)] & BITSET_BIT(b)) != 0) #define BITSET_SET(x, b) ((x)[BITSET_BITWORD(b)] |= BITSET_BIT(b)) #define BITSET_CLEAR(x, b) ((x)[BITSET_BITWORD(b)] &= ~BITSET_BIT(b)) @@ -69,7 +69,7 @@ */ #define BITSET_TEST_RANGE(x, b, e) \ (BITSET_BITWORD(b) == BITSET_BITWORD(e) ? \ - ((x)[BITSET_BITWORD(b)] & BITSET_RANGE(b, e)) : \ + (((x)[BITSET_BITWORD(b)] & BITSET_RANGE(b, e)) != 0) : \ (assert (!"BITSET_TEST_RANGE: bit range crosses word boundary"), 0)) #define BITSET_SET_RANGE(x, b, e) \ (BITSET_BITWORD(b) == BITSET_BITWORD(e) ? \