On Fri, 6 Dec 2024 at 10:31, Vincent Mailhol <vincent.mailhol@xxxxxxxxx> wrote: > > > causes issues when 'x' is not an integer expression (think > > "is_const(NULL)" or "is_const(1 == 2)". > > But 1 == 2 already has an integer type as proven by: Yeah, I was confused about exactly what triggers that odd '-Wint-in-bool-context'. It's not about some actual bool type, it's literally a random collection of integer operations used with logical ops. So it's things like "!(var<<2)" that generate that warning, because some compiler person at some point went "maybe that left shift should have been just a comparison instead '<'". But it turns out that "(var <<2)?0:0" _also_ triggers that warning. End result: I have *no* idea how to shut that crazy warning up for this case, if we want to have some generic macro that says "is this constant". Because it damn well is perfectly sane to ask "is (a << 3) a constant expression". How very annoying. This may be a case of "we just need to disable that incorrect compiler warning". Or does anybody see a workaround? Linus Linus