From 9c3402aa1e145420b868359e993b0a38ae9a6408 Mon Sep 17 00:00:00 2001 From: Thomas Haller Date: Mon, 11 Dec 2017 16:24:42 +0100 Subject: [PATCH] build: add "-Wvla" to warn about uses of variable-length arrays We don't use them, so add a compiler warning about their use. I think they are annoying, because sizeof(x) and typeof(x) might evaluate at runtime. Especially the typeof() extension is useful for macros, but behaves badly with variable-length arrays due to running code at runtime. But the worst is, G_STATIC_ASSERT() is implemented by declaring an array of negative length. Usually, the checked condition should be a compile time constant, but with VLAs the compiler would not evaluate the static-assert at compile time and instead accept it silently. It's easy to mess up static asserts to wrongly have a non-constant condition, especially when the static-assert is used inside a macro. Just say no. --- m4/compiler_options.m4 | 1 + 1 file changed, 1 insertion(+) diff --git a/m4/compiler_options.m4 b/m4/compiler_options.m4 index ccb51f5e6e..c0b07e5b4b 100644 --- a/m4/compiler_options.m4 +++ b/m4/compiler_options.m4 @@ -79,6 +79,7 @@ if test "$GCC" = "yes" -a "$set_more_warnings" != "no"; then -Wshift-negative-value \ -Wstrict-prototypes \ -Wundef \ + -Wvla \ -Wno-duplicate-decl-specifier \ -Wno-format-truncation \ -Wno-format-y2k \