better bitp_set

apparently gcc & clang aren't smart enough to notice the unnecessary
intermediate u64
This commit is contained in:
dzaima 2024-08-15 05:59:29 +03:00
parent 3b2b9bba1a
commit 00a64101e9

View File

@ -25,7 +25,7 @@ typedef TyArr BitArr;
#define BIT_N(IA) (((IA)+63) >> 6) // u64 count needed to store IA bits
static inline void bitp_set(u64* arr, u64 n, bool v) {
u64 m = ((u64)1)<<(n&7);
u8 m = ((u8)1) << (n&7);
if (v) ((u8*)arr)[n>>3]|= m;
else ((u8*)arr)[n>>3]&= ~m;
// arr[n>>6] = (arr[n>>6]&(~m)) | (((u64)v)<<(n&63));