[Mesa-dev] [PATCH 2/2] glsl: raise warning when using uninitialized variables

Alejandro Piñeiro apinheiro at igalia.com
Mon Feb 29 07:01:09 UTC 2016



On 26/02/16 22:18, Ian Romanick wrote:
> On 02/26/2016 07:09 AM, Alejandro Piñeiro wrote:
>> v2:
>>  * Take into account out varyings too (Timothy Arceri)
>>  * Fix style (Timothy Arceri)
>>  * Use a new ast_expression variable, instead of an
>>    ast_expression::hir new parameter (Timothy Arceri)
>>
>> Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=94129
>> ---
>>  src/compiler/glsl/ast_to_hir.cpp | 7 +++++++
>>  1 file changed, 7 insertions(+)
>>
>> diff --git a/src/compiler/glsl/ast_to_hir.cpp b/src/compiler/glsl/ast_to_hir.cpp
>> index 49e4858..ac451df 100644
>> --- a/src/compiler/glsl/ast_to_hir.cpp
>> +++ b/src/compiler/glsl/ast_to_hir.cpp
>> @@ -1899,6 +1899,13 @@ ast_expression::do_hir(exec_list *instructions,
>>        if (var != NULL) {
>>           var->data.used = true;
>>           result = new(ctx) ir_dereference_variable(var);
>> +
>> +         if ((var->data.mode == ir_var_auto || var->data.mode == ir_var_shader_out)
>> +             && !this->is_lhs
>> +             && result->variable_referenced()->data.assigned != true) {
>> +            _mesa_glsl_warning(&loc, state, "`%s' used uninitialized",
>> +                               this->primary_expression.identifier);
> It seems like this might miss cases like
>
> void main()
> {
>     int i;
>     int a[2];
>
>     a[i] = 0;
> }

Just tested and I got the "warning: `i' used uninitialized" message, so
this case is covered.

BR


More information about the mesa-dev mailing list