[Mesa-dev] [PATCH 3/8] nir: Silence missing field initializer warnings for nir_alu_src

Kenneth Graunke kenneth at whitecape.org
Wed Dec 16 11:12:27 PST 2015


On Monday, December 14, 2015 03:34:27 PM Ian Romanick wrote:
> From: Ian Romanick <ian.d.romanick at intel.com>
> 
> nir/nir_builder.h:234:4: warning: missing initializer for field 'use_link' of 'n
> ir_src' [-Wmissing-field-initializers]
>     nir_alu_src alu_src = { NIR_SRC_INIT };
>     ^
> 
> Number of total warnings in my build reduced from 1676 to 1643
> (reduction of 33).
> 
> Patch generated by:
> 
>     egrep -lr 'nir_alu_src .* = \{ NIR_SRC_INIT \}' src/ | while read f
>     do
>         sed --in-place -e 's/nir_alu_src \(.*\) = { NIR_SRC_INIT }/nir_alu_src \1 = { NIR_SRC_INIT, false, false, { 0, } }/' $f
>     done
> 
> Signed-off-by: Ian Romanick <ian.d.romanick at intel.com>

I don't like this patch - it makes you type a bunch of gook every time
you want to create a nir_alu_src.

I would rather see:

#define NIR_ALU_SRC_INIT { NIR_SRC_INIT, false, false, { 0, 0, 0, 0 } }

and then the rest of the code changed to:

   nir_alu_src alu_src = NIR_ALU_SRC_INIT;

That way, it's easy to construct nir_alu_src objects.

(This also explicitly initializes all four elements of swizzle[4],
because after the discussion about trailing commas in this thread,
I'm paranoid about what works where...)

That patch would get my Reviewed-by.

> ---
>  src/glsl/nir/nir_builder.h     | 4 ++--
>  src/glsl/nir/nir_search.c      | 2 +-
>  src/mesa/program/prog_to_nir.c | 4 ++--
>  3 files changed, 5 insertions(+), 5 deletions(-)
> 
> diff --git a/src/glsl/nir/nir_builder.h b/src/glsl/nir/nir_builder.h
> index b909f483..2a68883 100644
> --- a/src/glsl/nir/nir_builder.h
> +++ b/src/glsl/nir/nir_builder.h
> @@ -240,7 +240,7 @@ static inline nir_ssa_def *
>  nir_swizzle(nir_builder *build, nir_ssa_def *src, unsigned swiz[4],
>              unsigned num_components, bool use_fmov)
>  {
> -   nir_alu_src alu_src = { NIR_SRC_INIT };
> +   nir_alu_src alu_src = { NIR_SRC_INIT, false, false, { 0, } };
>     alu_src.src = nir_src_for_ssa(src);
>     for (unsigned i = 0; i < num_components; i++)
>        alu_src.swizzle[i] = swiz[i];
> @@ -268,7 +268,7 @@ nir_ssa_for_src(nir_builder *build, nir_src src, int num_components)
>     if (src.is_ssa && src.ssa->num_components == num_components)
>        return src.ssa;
>  
> -   nir_alu_src alu = { NIR_SRC_INIT };
> +   nir_alu_src alu = { NIR_SRC_INIT, false, false, { 0, } };
>     alu.src = src;
>     for (int j = 0; j < 4; j++)
>        alu.swizzle[j] = j;
> diff --git a/src/glsl/nir/nir_search.c b/src/glsl/nir/nir_search.c
> index 56d7e81..ab8a7d6 100644
> --- a/src/glsl/nir/nir_search.c
> +++ b/src/glsl/nir/nir_search.c
> @@ -289,7 +289,7 @@ construct_value(const nir_search_value *value, nir_alu_type type,
>        const nir_search_variable *var = nir_search_value_as_variable(value);
>        assert(state->variables_seen & (1 << var->variable));
>  
> -      nir_alu_src val = { NIR_SRC_INIT };
> +      nir_alu_src val = { NIR_SRC_INIT, false, false, { 0, } };
>        nir_alu_src_copy(&val, &state->variables[var->variable], mem_ctx);
>  
>        assert(!var->is_constant);
> diff --git a/src/mesa/program/prog_to_nir.c b/src/mesa/program/prog_to_nir.c
> index 539e3c0..c5d5687 100644
> --- a/src/mesa/program/prog_to_nir.c
> +++ b/src/mesa/program/prog_to_nir.c
> @@ -183,7 +183,7 @@ ptn_get_src(struct ptn_compile *c, const struct prog_src_register *prog_src)
>           if (prog_src->RelAddr) {
>              deref_arr->deref_array_type = nir_deref_array_type_indirect;
>  
> -            nir_alu_src addr_src = { NIR_SRC_INIT };
> +            nir_alu_src addr_src = { NIR_SRC_INIT, false, false, { 0, } };
>              addr_src.src = nir_src_for_reg(c->addr_reg);
>              nir_ssa_def *reladdr = nir_imov_alu(b, addr_src, 1);
>  
> @@ -936,7 +936,7 @@ ptn_add_output_stores(struct ptn_compile *c)
>            * a vec4 with undefined .xyw components.  We resolve it to a scalar, to
>            * match GLSL's gl_FragDepth and the expectations of most backends.
>            */
> -         nir_alu_src alu_src = { NIR_SRC_INIT };
> +         nir_alu_src alu_src = { NIR_SRC_INIT, false, false, { 0, } };
>           alu_src.src = nir_src_for_reg(c->output_regs[FRAG_RESULT_DEPTH]);
>           alu_src.swizzle[0] = SWIZZLE_Z;
>           store->src[0] = nir_src_for_ssa(nir_fmov_alu(b, alu_src, 1));
> 
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: This is a digitally signed message part.
URL: <http://lists.freedesktop.org/archives/mesa-dev/attachments/20151216/e9a40282/attachment.sig>


More information about the mesa-dev mailing list