[PATCH 02/10] compiler.h: add is_const() as a replacement of __is_constexpr()
Linus Torvalds
torvalds at linux-foundation.org
Fri Dec 6 10:52:32 PST 2024
On Fri, 6 Dec 2024 at 10:31, Vincent Mailhol <vincent.mailhol at gmail.com> 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
More information about the linux-arm-kernel
mailing list