[Mesa-dev] [PATCH] glsl: add default switch case to silence uninitialized variable warning
Paul Berry
stereotype441 at gmail.com
Fri Aug 23 14:05:30 PDT 2013
On 23 August 2013 13:55, Brian Paul <brianp at vmware.com> wrote:
> On 08/23/2013 02:39 PM, Matt Turner wrote:
>
>> On Fri, Aug 23, 2013 at 1:24 PM, Brian Paul <brianp at vmware.com> wrote:
>>
>>> ---
>>> src/glsl/ast_to_hir.cpp | 3 +++
>>> 1 file changed, 3 insertions(+)
>>>
>>> diff --git a/src/glsl/ast_to_hir.cpp b/src/glsl/ast_to_hir.cpp
>>> index feff586..24efec6 100644
>>> --- a/src/glsl/ast_to_hir.cpp
>>> +++ b/src/glsl/ast_to_hir.cpp
>>> @@ -1933,6 +1933,9 @@ validate_binding_qualifier(**struct
>>> _mesa_glsl_parse_state *state,
>>> case fragment_shader:
>>> limit = ctx->Const.FragmentProgram.**MaxTextureImageUnits;
>>> break;
>>> + default:
>>> + limit = 0;
>>> + assert(!"Unexpected shader type");
>>> }
>>>
>>> if (max_index >= limit) {
>>> --
>>> 1.7.10.4
>>>
>>
>> I can't see why this would be necessary, since the switch statement
>> switches over a variable of type _mesa_glsl_parser_targets, and the
>> switch has cases for all elements in the enum.
>>
>> enum _mesa_glsl_parser_targets {
>> vertex_shader,
>> geometry_shader,
>> fragment_shader
>> };
>>
>>
> gcc 4.8.1 on Fedora 19:
>
> ../../../src/glsl/ast_to_hir.**cpp: In function 'void
> apply_type_qualifier_to_**variable(const ast_type_qualifier*,
> ir_variable*, _mesa_glsl_parse_state*, YYLTYPE*, bool, bool)':
> ../../../src/glsl/ast_to_hir.**cpp:1917:66: warning: 'limit' may be used
> uninitialized in this function [-Wmaybe-uninitialized]
> "(%d)", qual->binding, elements, limit);
> ^
> ../../../src/glsl/ast_to_hir.**cpp:1901:16: note: 'limit' was declared
> here
> unsigned limit;
> ^
>
In that case, let's fix it by initializing limit to 0 at its declaration.
That way we will get a (helpful) compiler warning in the inevitable future
event that we add new values to _mesa_glsl_parser_targets.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freedesktop.org/archives/mesa-dev/attachments/20130823/ec75fc0e/attachment.html>
More information about the mesa-dev
mailing list