Am Samstag, dem 07.12.2024 um 10:26 -0800 schrieb Linus Torvalds: > On Sat, 7 Dec 2024 at 05:07, Martin Uecker <muecker@xxxxxxx> wrote: > > > > VLA use *less* stack than a fixed size arrays with fixed bound. > > Not really. You end up with tons of problems, not the least of which > is how to actually analyze the stack size. It also gets *very* nasty > to have code that declares the VLA size using an argument that is then > checked afterwards - and if you have a strong preference for > "declarations before code", you end up with *horrific* issues. > > And even if you are super-careful, and you solved the analysis > problem, in practice VLAs will cause huge stack issues simply due to > code generation issues. The compiler will end up doing extra > alignment and extra frame handling and saving, to the point where any > advantages the VLA would bring is completely dwarfed by all the > disadvantages. But that all seem solvable issues on the compiler side. If you said the maximum stack size for arrays we tolerate is X, then a compiler could tell you if a) this is not guaranteed in a specific situation (-Wvla-larher-than) and b) transform the array automatically to fixed size array of size X *or* something smaller when it can show this. Because now you do the exact same thing manually while losing precise bounds checking. Martin > > We went through this. We are so *much* better off without VLAs that > it's not even funny. > > Now when the compiler says "your stack size is big", you just look > "Oh, that struct should be allocated with kmalloc, not on the stack". > Boom. Done. > > Linus