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

Ian Romanick idr at freedesktop.org
Fri Feb 26 21:18:06 UTC 2016


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;
}

> +         }
>        } else {
>           _mesa_glsl_error(& loc, state, "`%s' undeclared",
>                            this->primary_expression.identifier);
> 



More information about the mesa-dev mailing list