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