diff options
| author | 2025-12-23 10:08:34 +0100 | |
|---|---|---|
| committer | 2025-12-23 10:08:34 +0100 | |
| commit | 56cf12a2aca36fabf3c3918947a88cbc4a605bb2 (patch) | |
| tree | 23ef921914a027a7335f9163a6e9c4e45dd3e668 /ir/ir.h | |
| parent | 3f67cc35c7659a3c6921caaabac8b6a4399e72cb (diff) | |
ir: use BIT macro for regset (1<< is wrong for u64)
Diffstat (limited to 'ir/ir.h')
| -rw-r--r-- | ir/ir.h | 2 |
1 files changed, 2 insertions, 0 deletions
@@ -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); |