[Mesa-dev] [PATCH 4/8] nir: Silence missing field initializer warnings for vectors in nir_constant_expressions

Jason Ekstrand jason at jlekstrand.net
Wed Dec 16 13:06:38 PST 2015


On Dec 16, 2015 12:36 PM, "Kenneth Graunke" <kenneth at whitecape.org> wrote:
>
> On Monday, December 14, 2015 03:34:28 PM Ian Romanick wrote:
> > From: Ian Romanick <ian.d.romanick at intel.com>
> >
> > nir/nir_constant_expressions.c: In function 'evaluate_ball2':
> > nir/nir_constant_expressions.c:279:7: warning: missing initializer for
field 'z' of 'struct bool_vec' [-Wmissing-field-initializers]
> >        };
> >        ^
> > nir/nir_constant_expressions.c:234:10: note: 'z' declared here
> >     bool z;
> >           ^
> >
> > Number of total warnings in my build reduced from 1643 to 1574
> > (reduction of 69).
> >
> > Signed-off-by: Ian Romanick <ian.d.romanick at intel.com>
> > ---
> >  src/glsl/nir/nir_constant_expressions.py | 7 +++++++
> >  1 file changed, 7 insertions(+)
> >
> > diff --git a/src/glsl/nir/nir_constant_expressions.py
b/src/glsl/nir/nir_constant_expressions.py
> > index 32784f6..81dd67f 100644
> > --- a/src/glsl/nir/nir_constant_expressions.py
> > +++ b/src/glsl/nir/nir_constant_expressions.py
> > @@ -239,6 +239,13 @@ evaluate_${name}(unsigned num_components,
nir_const_value *_src)
> >              _src[${j}].${op.input_types[j][:1]}[${k}],
> >           % endif
> >        % endfor
> > +      % for k in range(op.input_sizes[j], 4):
> > +         % if op.input_types[j] == "bool":
> > +            false,
> > +         % else:
> > +            0,
> > +         % endif
> > +      % endfor
>
> I'd be tempted to simplify this to:
>
>       % for k in range(op.input_sizes[j], 4):
>          0,
>       % endfor
>
> 0 will be implicitly converted to bool.  (I'd rather keep the generator
> as simple as possible, since it's the code that people actually read and
> maintain...)

Originally, I has some idea that if we could avoid initializing some of the
parameters, you would get warnings if the expression provided in
nir_opcodes.py used components that don't exist.  However, since struct
initializers are defined to fill extra components in with zeros in C99,
this kind of falls flat.  I'd like to find a way to do that at some point,
but this is fine for now.

In one revision of nir_constant_expressions, I had separate vec4, vec3,
etc. structs for each type and vector length.  Maybe we should consider
doing that.  But that's work, so this is fine for now.
--Jason
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freedesktop.org/archives/mesa-dev/attachments/20151216/934a04e7/attachment.html>


More information about the mesa-dev mailing list