Messages in this thread | | | From | Linus Torvalds <> | Date | Tue, 20 Mar 2018 16:26:52 -0700 | Subject | Re: [PATCH v5 0/2] Remove false-positive VLAs when using max() |
| |
On Tue, Mar 20, 2018 at 4:23 PM, Linus Torvalds <torvalds@linux-foundation.org> wrote: > > Hmm. So thanks to the diseased mind of Martin Uecker, there's a better > test for "__is_constant()": > > /* Glory to Martin Uecker <Martin.Uecker@med.uni-goettingen.de> */ > #define __is_constant(a) \ > (sizeof(int) == sizeof(*(1 ? ((void*)((a) * 0l)) : (int*)1))) > > that is actually *specified* by the C standard to work, and doesn't > even depend on any gcc extensions.
Well, it does depend on 'sizeof(*(void *)X)' being 1 and the compiler not complaining about it, and that sizeof(int) is not 1.
But since we depend on those things in the kernel anyway, that's fine.
Linus
| |