On Sun, 05 Mar 2017, Måns Rullgård wrote: > Tomas Winkler <tom...@gmail.com> writes: > > Sparse complains for arrays declared with variable length > > > > 'warning: Variable length array is used' > > > > Prior to c99 this was not allowed but lgcc (c99) doesn't have problem > > with that https://gcc.gnu.org/onlinedocs/gcc/Variable-Length.html. > > And also Linux kernel compilation with W=1 doesn't complain. > > > > Since sparse is used extensively would like to ask what is the correct > > usage of arrays of variable length > > within Linux Kernel. > > Variable-length arrays are a very bad idea. Don't use them, ever. > If the size has a sane upper bound, just use that value statically. > Otherwise, you have a stack overflow waiting to happen and should be > using some kind of dynamic allocation instead. > > Furthermore, use of VLAs generally results in less efficient code. For > instance, it forces gcc to waste a register for the frame pointer, and > it often prevents inlining.
Well, if we're going to forbid VLAs in the kernel, IMHO the kernel build system should call gcc with -Werror=vla to get that point across early, and flush out any offenders. -- Henrique Holschuh