From 56cf12a2aca36fabf3c3918947a88cbc4a605bb2 Mon Sep 17 00:00:00 2001 From: lemon Date: Tue, 23 Dec 2025 10:08:34 +0100 Subject: ir: use BIT macro for regset (1<< is wrong for u64) --- ir/ir.h | 2 ++ 1 file changed, 2 insertions(+) (limited to 'ir/ir.h') diff --git a/ir/ir.h b/ir/ir.h index b47965d..dccca0c 100644 --- a/ir/ir.h +++ b/ir/ir.h @@ -145,12 +145,14 @@ struct use { struct block *blk; ushort u; }; enum { MAXREGS = 64 }; /** register set **/ typedef uvlong regset; +#define BIT(x) (1ull<<(x)) #define rsset(pS, r) (*(pS) |= 1ull << (r)) #define rsclr(pS, r) (*(pS) &=~ (1ull << (r))) #define rstest(S, r) ((S) >> (r) & 1) static inline bool rsiter(int *i, uvlong rs) { + if (*i > 63) return 0; uvlong mask = -(1ull << *i); if ((rs & mask) == 0) return 0; *i = lowestsetbit(rs & mask); -- cgit v1.2.3