On 12/14/2015 03:38 PM, Ilia Mirkin wrote: > It's a pretty standard feature of compilers to init things to 0 and > not have the full structure specified like that... what compiler are > you seeing these with? Can we just fix the glitch with a > -Wno-stupid-warnings?
I have observed this with several versions of GCC. In C, you can avoid this with a trailing comma like: #define NIR_SRC_INIT (nir_src) { { NULL }, } However, nir.h is also used in some C++ code where that doesn't help. To be honest, I'm not a big fan of these macros. Without C99 designated initalizers, maintaining initializers like these (or the ones in src/glsl/builtin_variables.cpp) is a real pain. We can't use those, and we can't use C++ constructors. We have no good options available. :( I thought about replacing them with a static inline function that returns a zero-initialized struct. The compiler should generate the same code. However, that doesn't work with uses like those in patch 3. I'm also a little curious why you didn't raise this issue when I sent these patches out in August. I removed the patch from the series that you objected to back then. > On Mon, Dec 14, 2015 at 6:34 PM, Ian Romanick <i...@freedesktop.org> wrote: >> From: Ian Romanick <ian.d.roman...@intel.com> >> >> nir/nir.h: In function 'nir_src_for_ssa': >> nir/nir.h:552:4: warning: missing initializer for field 'use_link' of >> 'nir_src' >> [-Wmissing-field-initializers] >> nir_src src = NIR_SRC_INIT; >> ^ >> In file included from nir/nir.c:28:0: >> nir/nir.h:508:21: note: 'use_link' declared here >> struct list_head use_link; >> ^ >> >> Number of total warnings in my build reduced from 2329 to 1932 >> (reduction of 397). >> >> Signed-off-by: Ian Romanick <ian.d.roman...@intel.com> >> --- >> src/glsl/nir/nir.h | 2 +- >> 1 file changed, 1 insertion(+), 1 deletion(-) >> >> diff --git a/src/glsl/nir/nir.h b/src/glsl/nir/nir.h >> index 2e72e66..5543c52 100644 >> --- a/src/glsl/nir/nir.h >> +++ b/src/glsl/nir/nir.h >> @@ -515,7 +515,7 @@ typedef struct nir_src { >> bool is_ssa; >> } nir_src; >> >> -#define NIR_SRC_INIT (nir_src) { { NULL } } >> +#define NIR_SRC_INIT (nir_src) { { NULL }, { NULL, NULL }, { { NULL, NULL, >> 0 } }, false } >> >> #define nir_foreach_use(reg_or_ssa_def, src) \ >> list_for_each_entry(nir_src, src, &(reg_or_ssa_def)->uses, use_link) >> -- >> 2.5.0 >> >> _______________________________________________ >> mesa-dev mailing list >> mesa-dev@lists.freedesktop.org >> http://lists.freedesktop.org/mailman/listinfo/mesa-dev > _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev