[Mesa-dev] [PATCH 4/8] nir: Silence missing field initializer warnings for vectors in nir_constant_expressions
From: Ian Romanick 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 --- 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 }; % endfor -- 2.5.0 ___ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev
Re: [Mesa-dev] [PATCH 4/8] nir: Silence missing field initializer warnings for vectors in nir_constant_expressions
On Monday, December 14, 2015 03:34:28 PM Ian Romanick wrote: > From: Ian Romanick > > 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 > --- > 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...) With that change, Reviewed-by: Kenneth Graunke >}; > % endfor > > signature.asc Description: This is a digitally signed message part. ___ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev
Re: [Mesa-dev] [PATCH 4/8] nir: Silence missing field initializer warnings for vectors in nir_constant_expressions
On Dec 16, 2015 12:36 PM, "Kenneth Graunke" wrote: > > On Monday, December 14, 2015 03:34:28 PM Ian Romanick wrote: > > From: Ian Romanick > > > > 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 > > --- > > 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 ___ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev