On Thu, Jul 20, 2017 at 6:44 PM, Ramsay Jones <ramsay@xxxxxxxxxxxxxxxxxxxx> wrote: > > > On 20/07/17 13:02, Christopher Li wrote: >> On Wed, Jul 19, 2017 at 4:13 PM, Ramsay Jones >> <ramsay@xxxxxxxxxxxxxxxxxxxx> wrote: >>> >>> The 'selfcheck' make target issues warnings about using vla's in the >>> pre-processor code, like so: >>> >>> CHECK pre-process.c >>> pre-process.c:712:25: warning: Variable length array is used. >>> pre-process.c:2019:28: warning: Variable length array is used. >>> >>> A Makefile change to pass '-Wno-vla' to sparse when processing this >>> source file (or all source files) may be a better solution than the >>> one given here. >>> >>> Replace the use of vla's with heap allocation. This has performance >>> implications (although it may me safer), due to the dynamic memory >>> allocation and the zero initialisation of the memory (using calloc). >>> I have not done any timing measurements to see if this is a problem >>> in practice. >> >> I purpose the following patch. Make the expand using stack for small >> argument numbers. That should not have much performance impact >> at all because long macro arguments are rare. > > My first reaction was surprise that you didn't go for the Makefile > idea - setting '-Wno-vla' would be the simplest solution. ;-) > > I can understand warning about vla usage (especially in the kernel), > but it a 'standard' supported feature. I don't use them myself, partly > because they are a 'relatively' new feature, but also because I have had > some bad experience in the past using alloca in similar circumstances. I second this opinion. In the kernel, stacks are quite small and it's very natural to: - limit stack use to the minimal - control stack usage and so VLAs are avoided (but not banned). But in userspace this limit doesn't exist so why make the code more complicated? > My second thought was, have you done some timing tests (no I haven't) > and determined that this causes a noticeable slowdown? Also, this is not IMO -rc4+ material. -- Luc -- To unsubscribe from this list: send the line "unsubscribe linux-sparse" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html